You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django文件上传调用InMemoryUploadedFile.save报AttributeError错误

报错原因

运行时抛出的异常信息:

Exception Type: AttributeError
Exception Value: 'InMemoryUploadedFile' object has no attribute 'save'

触发场景是直接调用request.FILES取出的上传文件对象的save()方法,本质是因为Django的InMemoryUploadedFile是内存中的文件流对象,本身没有实现写入本地磁盘的save()方法,因此调用会报属性不存在的错误。

最简修复方案

不需要依赖Django的Form、Model等封装组件,直接手动将文件流写入本地磁盘即可,兼顾大文件内存安全的最简写法:

from django.http import HttpResponse

def upload(request):
    file = request.FILES["picture"]
    # 二进制写模式打开本地目标文件
    with open("hello.png", "wb+") as target_f:
        # 分块读取上传文件内容写入,避免大文件占满内存
        for chunk in file.chunks():
            target_f.write(chunk)
    return HttpResponse("done uploading")

如果仅做本地小文件上传测试,还可以压缩成更短的写法:

from django.http import HttpResponse

def upload(request):
    open("hello.png", "wb").write(request.FILES["picture"].read())
    return HttpResponse("done uploading")

提示:以上极简写法未包含文件类型校验、存储路径安全校验、重名文件覆盖逻辑,仅适合快速调试场景使用,正式环境请补充对应安全校验规则。

内容的提问来源于stack exchange,提问作者Waseem Saeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 20:24:19