9

XMLHttpRequest 経由で投稿データを送信しています:

var xmlHttp=new XMLHttpRequest();
xmlHttp.open("POST", domain, true);
xmlHttp.setRequestHeader("Content-type","multipart/form-data");
var formData = new FormData();  
formData.append("data", data_json_string);
xmlHttp.send(formData);

Python では、POST (または FILES など) データを取得しようとするとエラーが発生します。

MultiPartParserError: Invalid boundary in multipart: None

これは決してうまくいきませんか?? パラメータをループし、それぞれの前後に境界文字列を配置する単一の文字列としてフォーム本体を作成する必要がありますか? もしそうなら、それはどのように見えるべきですか?Python で POST から取得するにはどうすればよいですか?? または、もっと簡単な方法があります。私は周りを見回していますが、これについてはあまり見つけていません。

ところで、「multipart/form-data」を使用しているのは、文字列データが非常に長く、これがより高速に送信できるためです。フォームを作成して投稿し、iframe をターゲットにすると、うまくいきました。しかし、ここではxmlHttpの方がずっと好きです。

4

1 に答える 1

13

Content-Type自分でヘッダーを設定しないでください。.send()手動で生成されたヘッダーに欠けている、適切に生成された境界を含め、データを ing するときに適切に設定されます。

仕様には、.send(FormData)multipart/form-data エンコーディングを使用することが明確に記載されています。

データが FormData の場合

リクエスト エンティティ ボディは、データをフォーム データ セットとして使用し、明示的な文字エンコーディングとして UTF-8 を使用して multipart/form-data エンコーディング アルゴリズムを実行した結果とします。

MIME タイプを「multipart/form-data;」、U+0020 SPACE 文字、「boundary=」、および multipart/form-data エンコーディング アルゴリズムによって生成された multipart/form-data 境界文字列の連結とします。

于 2013-09-03T11:06:24.813 に答える