比如我要通过Python脚本上传文件到https://anonfile.com/这个网站上,在网上查了很多资料写了脚本还是失败
- import requests
- headers={‘User-Agent’:’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36′}
- url = ‘https://anonfile.com/api/upload’
- files = {‘files[]’: open(‘C:\\Users\\Admin\\Desktop\hello.txt’, ‘rb’)}
- response = requests.post(url, files=files,headers = headers)
- print(response.text)
复制代码
显示错误
- {"status":false,"error":{"message":"No file chosen.","type":"ERROR_FILE_NOT_PROVIDED","code":10}}
复制代码
求大佬指点啊
江西网友:
上传文件 没有进度条 等得心慌 更新个带进度条的
这个进度条是在命令行下的, idl的控制台不显示
- from clint.textui.progress import Bar as ProgressBar
- from requests_toolbelt import MultipartEncoder, MultipartEncoderMonitor
- import requests, re, os
- def create_callback(encoder):
- bar = ProgressBar(expected_size=encoder.len, filled_char=’=’)
- def callback(monitor):
- bar.show(monitor.bytes_read)
- return callback
- def get_token(indexHtml):
- r = re.search(r’\’X-CSRF-Token\’: \'(.+?)\”, indexHtml)
- return r.group(1)
- if __name__ == ‘__main__’:
- url = ‘https://anonfile.com’
- api = ‘https://anonfile.com/api/upload’
- headers = {
- ‘user-agent’: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’,
- }
- session = requests.session()
- r = session.get(url, headers=headers)
- headers[‘x-csrf-token’] = get_token(r.text)
- headers[‘referer’] = ‘https://anonfile.com/’
- # 文件地址就写这里了
- encoder = MultipartEncoder({‘file’: (‘kblm.jpg’, open(‘kblm.jpg’, ‘rb’), ‘application/octet-stream’)})
- callback = create_callback(encoder)
- monitor = MultipartEncoderMonitor(encoder, callback)
- headers[‘Content-Type’] = monitor.content_type
- r = session.post(api, data=monitor, headers=headers)
- print(‘\nUpload finished! (Returned status {0} {1})’.format(
- r.status_code, r.reason
- ))
- print(r.text)
复制代码
- [================================] 116933/116933 – 00:00:00
- Upload finished! (Returned status 200 OK)
- {"status":true,"data":{"file":{"url":{"full":"https://anonfile.com/B329l2tfn3/kblm_jpg","short":"https://anonfile.com/B329l2tfn3"},"metadata":{"id":"B329l2tfn3","name":"kblm.jpg","size":{"bytes":116749,"readable":"116.75 KB"}}}}}
复制代码
山西网友:
跟随大佬学习下py传文件
重庆网友:看这个返回意思是没有对应文件……
“如果你发送一个非常大的文件作为 multipart/form-data 请求,你可能希望将请求做成数据流。默认下 requests 不支持, 但有个第三方包 requests-toolbelt 是支持的。你可以阅读 toolbelt 文档 来了解使用方法。”
看返回好像是没有找到对应文件……
甘肃网友:你先把文件拷贝到脚本同目录上传看看
湖北网友:mk
海南网友:哇,可以了,谢谢python大佬
我来好好学习一下您的代码
西藏网友:谢谢,看来 requests-toolbelt是正确的选择
以上信息转载自Hostloc。
未经允许不得转载:美国VPS_搬瓦工CN2 GIA VPS » 请教一下Python大佬,requests.post上传文件到网站错误怎么破?