# 問題場景:對接第三方時遇到一個圖片存儲問題,對方給的是他們服務器的圖片路徑地址,可是 我這裏存儲圖片用的是 ImageField 字段屬性,也設置了存儲路徑,如今一旦將圖片顯示到前端就會將設置的存儲路徑前綴也帶上。可是又不能改爲 CharField 字段屬性,因此爲了避免影響當前數據的狀況下,須要將第三方的圖片下載到本身的服務器內,並存儲。(不知道有沒有更好的方法,反正我找了半天沒找到。。)前端
# 這個轉換能夠至關於你提交表單時傳的圖片對象,能夠直接存入django的 ImageField 中django
def file_to_img(img_url): # 圖片路徑轉換成 InMemoryUploadedFile picFrontImg = requests.get(img_url) hz1 = picFrontImg.request.url.split('.')[-1] f = BytesIO() img_content = picFrontImg.content # 圖片的二進制數據 f.write(img_content) front_path = "{0}.{1}".format(timezone.now().strftime('%Y%m%d%H%M%S%f'), hz1) img_obj = InMemoryUploadedFile(f, None, front_path, None, len(img_content), None, None) return img_obj def get_shop(request, *args, **kwargs): shop_obj = Shop.objects.filter(id=1).first() if shop_obj: img_obj = file_to_img("http://xxx.png") shop_obj.front_img = img_obj # 將圖片數據存入 shop_obj 對象中 shop_obj.save() """... 到此結束後續代碼暫不演示..."""
# 逐漸流失大概就是這個感受吧。服務器