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

使用Python脚本向本地Django服务器上传文件丢失后缀的问题

解决Django DRF文件上传后丢失后缀的问题

问题原因

你当前的上传脚本只传递了文件内容,没有提供完整的文件名(带后缀)和MIME类型信息,导致Django无法识别原始文件的后缀,最终保存的文件名丢失了.xlsx后缀。

修复方案

在构造请求的files参数时,需要以元组格式传入文件的完整信息:(完整文件名, 文件内容, MIME类型),这样Django就能正确解析并保留文件名后缀。

修改后的上传脚本

import requests

url = "http://localhost:8000/upload/"
file_path = "H:/MEGA_H/Data/uploaded/Book1.xlsx"
filename = "Book1.xlsx"

# xlsx文件对应的标准MIME类型
mime_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"

with open(file_path, 'rb') as f:
    file_data = {
        "result_file": (filename, f.read(), mime_type)
    }

# 重要:不要手动设置Content-Type请求头,requests会自动处理multipart/form-data格式
response = requests.post(url, files=file_data)

if response.status_code == 201:
    print("File successfully uploaded")
else:
    print(f"Failed to upload file. Status code: {response.status_code}, Response: {response.text}")

额外提示

  1. 确保你的Django模型中文件字段配置正确,比如:
    from django.db import models
    
    class FileResult(models.Model):
        timestamp = models.DateTimeField(auto_now_add=True)
        result_file = models.FileField(upload_to='uploads/')  # 可自定义存储子路径
    
  2. 原脚本中手动设置headers={'Content-Type': 'multipart/form-data'}是错误的,requests会根据files参数自动生成包含boundary的正确请求头,手动设置会导致请求格式异常。

内容的提问来源于stack exchange,提问作者Dinh Truong Anh Phuong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:50:19