2013-07-01 6 views
19

Mam dane formularza, a także plik do wysłania w tym samym pliku POST. Dla przykładu, {duration: 2000, file: test.wav}. Widziałem wiele wątków tutaj w wieloczęściowym/formularzu wysyłania danych przy użyciu zapytań Pythona. Były użyteczne, zwłaszcza this one.danych wieloczęściowych POST przy użyciu zapytań pythonowych: nie znaleziono granicy wieloczęściowej

Moja prośba próbka jest jak poniżej:

files = {'file': ('wavfile', open(filename, 'rb'))} 
    data = {'duration': duration} 
    headers = {'content-type': 'multipart/form-data'} 
    r = self.session.post(url, files=files, data=data, headers=headers) 

Ale kiedy wykonać powyższy kod, otrzymuję ten błąd:

5: 59: 55.338 DBG 09900 [DEBUG] Rozwiązywanie wyjątek od obsługi [ null]: org.springframework.web.multipart.MultipartException: Nie można przeanalizować wieloczęściowego żądania serwletu; Zagnieżdżony wyjątek to org.apache.commons.fileupload.FileUploadException: żądanie zostało odrzucone, ponieważ nie znaleziono granicy wieloczęściowej.

Moje pytania to: 1) Jak mogę sprawdzić, czy treść żądania została wysłana? Nie można użyć Wireshark, nie jest on w sieci. 2) dlaczego brakuje danych w zakodowanych danych? Czy coś mi umknęło, proszę wskazać.

Odpowiedz

35

NIGDY nie należy ustawiać nagłówka samodzielnie. Ustawiamy nagłówek poprawnie z granicą. Jeśli ustawisz ten nagłówek, nie będziemy, a twój serwer nie będzie wiedział, jakiej granicy się spodziewać (ponieważ jest dodany do nagłówka). Usuń swój niestandardowy nagłówek Content-Type, a wszystko będzie dobrze.

6

Wykonywanie nagłówka Content-Type z jawnymi "wieloczęściowymi/formularzowymi danymi" zadziałało!