gpt4 book ai didi

Python - 我可以将文件分成几部分上传到服务器吗?

转载 作者:行者123 更新时间:2023-12-01 04:43:06 25 4
gpt4 key购买 nike

更新代码:

import requests
import re

sessionObj = requests.session()
sessionObj.post('http://bestream.tv/login.html', data={'loginUsername':'my_user', 'loginPassword':'my_pass', 'submitme':'1'})
filehandle = open('Diabolik Lovers - 12.mp4', 'rb')

resp = sessionObj.get('http://bestream.tv/account_home.html')

url_form = re.search('url: \'(http:\/\/.*)?\'', resp.text).group(1)
sessionid = re.search('_sessionid:\s\'(.*)?\', cTracker:', resp.text).group(1)
ctracker = re.search('cTracker:\s\'(.*)?\', maxChun', resp.text).group(1)

tam=os.path.getsize('Diabolik Lovers - 12.mp4')

headers={}
n=0
stop=0

while stop < tam:
start = n*100000000
stop = min(start+99999999, tam)
contentrange = 'bytes {}-{}/{}'.format(start, stop, tam)
headers['Content-Range'] = contentrange
filehandle.seek(start)
r = sessionObj.post(url_form, headers=headers, files = {'files[]': (filehandle.name, filehandle)})
n+=1
print(r.text)

给出的答案:

[{"name":"Diabolik Lovers - 6.5.mp4","size":68152948,"type":"","error":null}]

从网络上传文件时,我在 Chrome -> 网络中得到以下结果:

Accept:application/json, text/javascript, */*; q=0.01
Content-Disposition:attachment; filename="Diabolik%20Lovers%20-%206.5.mp4"
Content-Range:bytes 0-99999999/168152948
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryHNdI5JvVzIVROkWQ
Origin:http://bestream.tv
Referer:http://bestream.tv/account_home.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36


Accept:application/json, text/javascript, */*; q=0.01
Content-Disposition:attachment; filename="Diabolik%20Lovers%20-%206.5.mp4"
Content-Range:bytes 100000000-168152947/168152948
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryfsXuVqiBMXo1Vtn7
Origin:http://bestream.tv
Referer:http://bestream.tv/account_home.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36

我需要将文件分成大于100000000字节的文件上传,如何修改代码来实现这一点?

最佳答案

至少从版本 2.7.0 开始,requests 不会执行任何操作来帮助您使用部分内容请求。

但它也不会妨碍你。而且这并不那么难。

您确实需要了解RFC 7233 ,它描述了 Range 和 Content-Range 如何工作。以及许多特定服务器具有的实际问题(或者至少是您的特定服务器具有的任何实际问题)。但基本思想非常简单:

对于每 100000000 字节,您发送另一个请求,并带有如下额外 header :

start = n*100000000
stop = min(start+99999999, filesize)
contentrange = 'bytes {}-{}/{}'.format(start, stop, filesize)
headers['Content-Range'] = contentrange

然后,当然,您只需发送文件的 start-stop 字节,而不是发送整个文件。 (您可以通过open文件然后seekstart,或者通过mmapping文件来做到这一点然后发送一个 View 切片,或者任何你喜欢的东西。)

关于Python - 我可以将文件分成几部分上传到服务器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30112916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com