python - django 將圖片路徑地址轉換成 InMemoryUploadedFile 並存儲數據庫


# 問題場景:對接第三方時遇到一個圖片存儲問題,對方給的是他們服務器的圖片路徑地址,但是 我這里存儲圖片用的是 ImageField  字段屬性,也設置了存儲路徑,現在一旦將圖片顯示到前端就會將設置的存儲路徑前綴也帶上。但是又不能改成  CharField 字段屬性,所以為了不影響當前數據的情況下,需要將第三方的圖片下載到自己的服務器內,並存儲。(不知道有沒有更好的方法,反正我找了半天沒找到。。)

# 這個轉換可以相當於你提交表單時傳的圖片對象,可以直接存入django的 ImageField 

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()
    
    """... 到此結束后續代碼暫不演示..."""

 

 

 

# 逐漸流失大概就是這個感覺吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM