Ubuntu 22.04 下 CURL 分块上传文件(C++)
实现类似下面Python request库代码,使用 CURL 库,实现文件分块上传、下载功能。
首先向服务器发送请求,生成project_guid, 是项目流程设计。发送请求的header, body_json等格式,按照自己的项目进行修改即可。
import requests
import os
import re
import jsonDOWNLOAD_RANGE = 102400
def download_chunk(url, project, output_path, start, end):
cur_size = 0
total_size = -1
while cur_size != total_size:
headers = {
'Range': f'{start}-{end}',
'Content-Type': 'application/json'
}
json_data = {
'project': project
}response = requests.get(url, headers=headers, json=json_data, stream=True)
if response.status_code in (200, 206):
tmp = int(response.headers.get('Content-Length'))
data = re.search(r'(\d+)-(\d*)/(\d*)', response.headers.get('Content-Range'))
total_size = int(data.group(3))with open(output_path, 'ab') as file:
for chunk in response.iter_content(chunk_size=tmp):
if chunk:
file.write(chunk)
cur_size += tmp
start = cur_size
end += tmp
print(f'total_size: {total_size} tmp_size: {tmp} cur_size: {cur_size} '
f'begin: {int(data.group(1))} end: {int(data.group(2))} '
f'start: {start} end: {end}')
else:
print(f'Failed to download chunk: {