python request 实现文件切片上传
时间: 2024-01-25 12:03:18 浏览: 127
文件切片上传是指将一个大文件分成多个小文件(切片),然后分别上传这些小文件,最后合并成一个完整的文件。这种方式可以提高上传速度和稳定性。下面是使用Python的requests库实现文件切片上传的示例代码:
```python
import os
import requests
# 定义上传接口URL
url = "http://example.com/upload"
# 定义每个文件块的大小
chunk_size = 1024 * 1024
# 打开待上传的文件
file_path = "/path/to/file"
file_size = os.path.getsize(file_path)
with open(file_path, "rb") as f:
# 循环上传每个文件块
for i in range(0, file_size, chunk_size):
# 计算当前文件块的起始位置和结束位置
start = i
end = min(i + chunk_size, file_size)
# 读取当前文件块的数据
f.seek(start)
data = f.read(end - start)
# 构造请求头,指定当前文件块的起始位置、结束位置和总大小
headers = {
"Content-Type": "application/octet-stream",
"Content-Range": "bytes {0}-{1}/{2}".format(start, end-1, file_size),
"Content-Length": str(end - start),
}
# 发送当前文件块的数据
r = requests.put(url, headers=headers, data=data)
# 打印上传进度
print("Uploaded {0}/{1} bytes".format(end, file_size))
```
在上面的代码中,我们首先定义了上传接口的URL和每个文件块的大小。然后打开待上传的文件,循环上传每个文件块。在循环中,我们先计算当前文件块的起始位置和结束位置,然后读取当前文件块的数据。接着,我们构造请求头,指定当前文件块的起始位置、结束位置和总大小,然后发送当前文件块的数据。最后打印上传进度。
阅读全文