python - django 将图片路径地址转换成 InMemoryUploadedFile 并存储数据库

# 问题场景:对接第三方时遇到一个图片存储问题,对方给的是他们服务器的图片路径地址,可是 我这里存储图片用的是 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()
    
    """... 到此结束后续代码暂不演示..."""

 

 

 

# 逐渐流失大概就是这个感受吧。服务器

相关文章
相关标签/搜索