2017-08-03 250 views
0

这是我试过,它没有工作。我尝试了一些其他的东西,但它也给了这是python请求上传文件到网站

“{‘成功’:假的,‘错误码’:400,‘说明’:‘没有输入文件(S)’}”相同的响应

import requests 

headers = { 

    'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryXt3hSEPnfRBwBjIn', 
    'Cookie': 'PHPSESSID=nsj01cb9864k1cb0rsga25o243; _ga=GA1.2.1065172575.1499660348; _gid=GA1.2.658410458.1501748127', 
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36' 
} 

url = 'http://pomf.cat/upload.php' 
print(open('geckodriver.log', 'rb').read()) 
files = {'file': open('geckodriver.log', 'rb')} 


r = requests.post(url, files=files, headers=headers) 

print(r.text) 

尝试了不同的文件得到了相同的性反应

import requests 

url = 'http://pomf.cat/upload.php' 

files = {'file': open('test.txt', 'rb')} 

print(files) 
>>>{'file': b'Hello!'} 
print(open("test.txt").read()) 
>>>Hello! 
r = requests.post(url, files=files) 
print(r.text) 
>>>{"success":false,"errorcode":400,"description":"No input file(s)"} 

回答

2

你看文档?你必须阅读文件和发送数据,而不仅仅是名称:

http://docs.python-requests.org/en/master/user/quickstart/#post-a-multipart-encoded-file

我查了一下这个pomf(主要是谷歌搜索),并发现了有趣的解决方案(看的文件字典键):

>>> files = {'files[]': open('links.txt', 'rb')} 
>>> response = requests.post(url, files=files) 
>>> response.text 
'{"success":true,"files":[{"hash":"316d880916ce07d93f42f6e28c97b004c5f450e3","name":"links.txt","url":"aaztfg.txt","size":1319,"deletion":"f455a0aae7c2665685cc6302f6c8ccd77dfd6f2e"}]}' 
>>> 
+0

是的,我有它是我的一个错字,它在阅读时仍然不起作用。 –

+0

你可以显示代码打开文件和响应? – Sergius

+0

文件= { '文件':打开( 'geckodriver.log', 'RB')读()} 打印(文件) { '文件':b'1500939447429 \ tgeckodriver \ TINFO \上127.0 tListening .0.1:63508 \ n'} –