首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用drf-chunked-upload库将文件上传到服务器?

如何使用drf-chunked-upload库将文件上传到服务器?
EN

Stack Overflow用户
提问于 2021-09-09 02:39:45
回答 1查看 181关注 0票数 0

我尝试了许多方法将文件上传到服务器,但总是得到响应{"detail":“没有提交块文件”}。如何正确使用这个库?

我的一个尝试是:

代码语言:javascript
复制
import requests

url = 'http://127.0.0.1:8000/chunked_upload/'

in_file = open("testfile.txt", "rb")
data = in_file.read()
response = requests.put(
    url,
    headers={
        "Content-Range": f"bytes {0}-{9}/{10}"
    },
    data={"filename": "testfile"},
    files={'file': data},
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-10 05:48:58

打开一个文件,分块重复向服务器发出PUT请求。要完成上传,请使用文件的校验和发出POST请求。

示例

代码语言:javascript
复制
import hashlib
import os

import requests
from requests.auth import HTTPBasicAuth

auth = HTTPBasicAuth(username='username', password='password')

file = 'prova.txt'

size = os.path.getsize(file)

hash_md5 = hashlib.md5()

CHUNK_SIZE = 100

with open(file, 'rb') as f:
    url = 'http://localhost:8000/'
    offset = 0
    for chunk in iter(lambda: f.read(CHUNK_SIZE), b''):
        hash_md5.update(chunk)
        res = requests.put(
            url,
            data={'filename': 'my_new_file'},
            files={'file': chunk},
            headers={
                'Content-Range': f'bytes {offset}-{offset + len(chunk) -1}/{size}'
            },
            auth=auth
        )
        offset = int(res.json().get('offset'))
        url = res.json().get('url')
    finalize = requests.post(url, data={'md5': hash_md5.hexdigest()}, auth=auth)
    print(finalize.status_code)
    print(finalize.json())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69111600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档