37

同じ POST で送信されるフォームデータとファイルがあります。例: {デュレーション: 2000、ファイル: test.wav}。Python リクエストを使用した multipart/form-data 投稿に関する多くのスレッドをここで見ました。それらは役に立ちました、特にこれは。

私のサンプルリクエストは次のとおりです。

    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)

しかし、上記のコードを実行すると、次のエラーが発生します。

5:59:55.338 Dbg 09900 [DEBUG] ハンドラーからの例外の解決 [null]: org.springframework.web.multipart.MultipartException: マルチパート サーブレット リクエストを解析できませんでした。ネストされた例外は org.apache.commons.fileupload.FileUploadException です: マルチパート境界が見つからなかったため、リクエストは拒否されました。

私の質問は次のとおりです。1) 送信されたリクエストの内容を確認するにはどうすればよいですか? ネットワーク経由ではないため、wireshark を使用できませんでした。2) エンコードされたデータに境界がないのはなぜですか? 何か見逃していましたか、指摘してください。

4

3 に答える 3

73

そのヘッダーを自分で設定しないでください。境界でヘッダーを適切に設定します。そのヘッダーを設定すると、サーバーは期待する境界を認識しません (ヘッダーに追加されるため)。カスタムの Content-Type ヘッダーを削除すれば問題ありません。

于 2013-07-03T02:02:12.017 に答える
8

明示的な「multipart/form-data」を使用して Content-Type ヘッダーを取り出すと、うまくいきました!

于 2015-10-28T05:49:10.850 に答える