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

如何使用drf-chunked-upload库上传文件,解决无分片文件提交报错

drf-chunked-upload 报错No chunk file was submitted解决方案

你遇到的报错核心原因是请求参数与drf-chunked-upload的默认要求不匹配,按以下步骤修正即可:

直接错误原因

drf-chunked-upload默认要求分片文件的请求字段名为chunk,你的代码中使用了file作为字段名,服务端无法识别到上传的分片文件,因此抛出该报错。

完整正确用法示例

除了字段名修正外,还要遵循分片上传的完整逻辑:先按分片大小逐段上传文件,全部分片上传完成后调用合并接口生成完整文件。

import requests
import os

# 自定义每个分片的大小,示例为2MB
CHUNK_SIZE = 2 * 1024 * 1024
file_path = "testfile.txt"
base_url = 'http://127.0.0.1:8000/chunked_upload/'
file_total_size = os.path.getsize(file_path)
# 用于标记同一次上传任务的ID,首次上传后由服务端返回
upload_id = None

with open(file_path, "rb") as f:
    current_offset = 0
    while current_offset < file_total_size:
        # 读取当前分片内容
        chunk_content = f.read(CHUNK_SIZE)
        current_chunk_length = len(chunk_content)
        current_end = current_offset + current_chunk_length - 1

        headers = {
            "Content-Range": f"bytes {current_offset}-{current_end}/{file_total_size}"
        }
        post_data = {
            "filename": os.path.basename(file_path),
        }
        # 非首次上传需要带上服务端返回的upload_id绑定任务
        if upload_id:
            post_data["upload_id"] = upload_id
        
        # 上传分片,字段名必须为chunk
        resp = requests.put(
            base_url,
            headers=headers,
            data=post_data,
            files={"chunk": chunk_content}
        )
        resp.raise_for_status()
        resp_data = resp.json()
        upload_id = resp_data["upload_id"]
        current_offset += current_chunk_length

# 全部分片上传完成后,发起合并请求
merge_resp = requests.post(
    base_url,
    data={
        "upload_id": upload_id,
        # 如果服务端开启了MD5校验,需要传入文件完整MD5值,否则可以省略
        # "md5": "your_file_full_md5"
    }
)
merge_resp.raise_for_status()
print("文件上传完成", merge_resp.json())

其他注意事项

  • 如果后端自定义了分片字段名,需要和后端配置的字段名保持一致,默认值为chunk
  • 分片大小不能小于后端配置的最小分片阈值,默认无最低限制,可在Django的REST_FRAMEWORK配置中调整
  • 如果不需要断点续传能力,也可以选择一次性上传整个文件,只需把CHUNK_SIZE设置为大于文件总大小即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:03:00