user7114146
user7114146

Reputation:

python requests upload file to website

this is what i've tried and it didn't work. I tried some other stuff but it also gave the same response which is

'{"success":false,"errorcode":400,"description":"No input file(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)

tried a different file got the same responce

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)"}

Upvotes: 0

Views: 2250

Answers (1)

Sergius
Sergius

Reputation: 986

Have you look at documentation? You have to read file and send data, not just name:

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

I investigated a bit about this pomf (mostly googling) and found interesting solution (look at dict key for files):

>>> 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"}]}'
>>> 

Upvotes: 2

Related Questions