2012-10-22 18 views
9

Próbuję przesłać plik przy użyciu requests. Muszę przesłać plik PDF i jednocześnie wysłać do formularza inne dane, takie jak nazwisko autora.Przesyłanie plików za pomocą żądań i wysyłanie dodatkowych danych

Próbowałem to:

requests.get(url, files = {"file":open("file.txt"), "author" : "me" }) 

Ale to nie wysyła dane do formularza.

+3

Przykład jest podany w dokumentacji [] (http://requests.readthedocs.org/en/latest/user/quickstart/#post-a-multipart-encoded-file). Czy masz z tym problemy? –

+0

@BurhanKhalid proszę spojrzeć na pytanie ponownie –

Odpowiedz

14

Rozumiem, że chcesz przesłać do adresu URL, plik pdf wraz z dodatkowymi parametrami.

Pierwszy błąd, który masz, to znaczy, że używasz .get(), a nie .post().

Używam próbek z documentation, które należy przejść. To powinno Ci zacząć:

>>> url = 'http://httpbin.org/post' 
>>> files = {'file': open('somefile.pdf', 'rb')} 
>>> values = {'author': 'John Smith'} 
>>> r = requests.post(url, files=files, data=values) 
+0

Zostałem poproszony o zrobienie tego 'Zrobić żądanie wieloczęściowego postu do http: // server-url/oauth /. z następującymi polami formularza. AUTOR, PLIK PDF " –

+1

Czy powinienem dodać plik w parametrze' data' parametr dict.?/? –

+0

Nie, dodaj go do parametru 'files', parametr' data' służy do danych formularza. –

Powiązane problemy