2017-06-30 16 views
0

私は自分のサーバーにビデオ/画像を送信する必要がある反応ネイティブアプリを持っています。私はすでに通常の投稿が動作することを知っていますが、formDataオブジェクトを送信しようとすると、決して電話を離れることはないようです。ここに私のコードです。React-NativeはHTTP経由でmultipart/form-dataを送信します

// method = 'POST'; 
// body = new formData(); 
// body contains text data and image/video file 
const post = (url, body, token, method) => { 
    let xhr = new XMLHttpRequest(); 
    xhr.open(method, url); 
    xhr.setRequestHeader('Authorization', 'Bearer' + token); 
    xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=---------------------------7692764ac82'); 
    xhr.send(body); 
    console.log(xhr); 
    return xhr.response; 
} 

bodyは、image/videoを含むformDataオブジェクトです。コンソールログでxhrが出力するオブジェクトには、_responseに "Binary FormData partにはcontent-typeヘッダーが必要です"という内容が含まれています。しかし、私は正しくそれを正しく設定したようですか?

助けてください、他の同様の質問がありますが、私はアイデアが不足しています。私はまた、成功なしでフェッチを使って試してみました。

+0

formDataには何を入力しますか? –

答えて

1

エラーメッセージは、(設定した)リクエストのコンテンツタイプヘッダーに関するものではなく、パーツのコンテンツタイプヘッダーに関するものです(表示していないので、不足している)。

FormDataに部品を追加するときには、typeを含めることを忘れないでください。画像の例:適切に設定type

const body = new FormData(); 
// ... 
body.append('image', { 
    uri: 'file:///...', 
    type: 'image/jpeg', // <- Did you miss that one? 
    name: 'someName', 
}); 

、ザネイティブランタイム部分のcontent-typeヘッダを追加する必要が反応します。 Android上で、その後

if (typeof value.type === 'string') { 
    headers['content-type'] = value.type; 
} 

ので、typeが欠落しているとき、一部ため、その後content-typeヘッダは、不足していると:(valueは、あなたのtypeプロパティの値である)これは、v0.46.0でFormData.js at line 79で行われますあなたはhereになります。ここで、エラーメッセージの出所を見ることができます。

この正確なエラーと根本原因については、that GitHub issueで説明します。

+0

これはまさにあなたに感謝しました!また、GitHubの問題へのリンクは、私のエラーのように見えます。私はこの答えに感謝します –

関連する問題