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

Django Rest Framework上传文件:如何从请求体而非请求头获取文件名?

解决方法

换用MultiPartParser解析器

你当前使用的FileUploadParser必须依赖Content-Disposition头提取文件名,这就是为什么必须手动加头且文件名被覆盖的原因。换成MultiPartParser就能自动获取上传文件的原始文件名,无需再手动设置请求头。

修改后的视图代码:

@api_view(['POST'])
@parser_classes([MultiPartParser])
@csrf_exempt
@login_required
def upload_image(request):
    file = request.FILES.get('file')
    if file:
        print(file.name)  # 现在会输出上传的原始文件名,比如dog.jpg
        # 你的上传存储逻辑继续写在这里

调整Postman的上传方式

放弃binary模式上传,改用form-data:

  • 在Postman中将请求体类型切换到form-data
  • 键名填写file(要和视图里request.FILES.get('file')的键对应)
  • 右侧类型选择File,然后选择本地的dog.jpg文件
  • 直接发送请求即可,后端会自动拿到原始文件名

补充说明

FileUploadParser的设计逻辑就是通过Content-Disposition头获取文件名,而二进制请求本身不带文件名元数据,必须依靠请求头传递。MultiPartParser是专门处理表单文件上传的解析器,会自动解析文件的原始信息,完全匹配你的需求。如果非要坚持用binary模式,只能让客户端通过URL参数或其他请求头传递文件名,反而更繁琐,所以优先推荐form-data的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:22:17