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() """... 到此结束后续代码暂不演示..."""
# 逐渐流失大概就是这个感觉吧。
分类:
Python
标签:
Python - Django
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报