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

前端通过FormData传文件至Django,后端获取文件对象失败如何解决?

问题解答

为什么获取到的file为None?

Django中,通过multipart/form-data格式(也就是FormData)上传的文件对象,不会被存放在request.POST里——request.POST仅用于存放普通文本表单字段(比如你这里的metadata)。文件类型的字段会单独存放在request.FILES对象中,所以用request.POST.get("file")自然拿不到值,返回None。

正确获取文件对象的方法

直接从request.FILES中获取文件即可,修改后端视图函数代码:

@api_view(["POST"])
def jobs(request):
    metadata = request.POST.get("metadata")
    file = request.FILES.get("file")  # 改为从request.FILES获取
    print(metadata)
    print(file)  # 现在能拿到文件对象了

    # 可选:处理文件的示例代码
    if file:
        # 读取文件二进制内容
        file_content = file.read()
        # 或者将文件保存到本地
        with open(f"./{file.name}", "wb") as save_file:
            save_file.write(file_content)

额外补充前端注意点:axios在传入FormData时会自动设置正确的Content-Type(带boundary的multipart/form-data),不要手动在请求配置里硬写headers: {'Content-Type': 'multipart/form-data'},否则可能导致后端无法正确解析文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 01:03:41