web-dev-qa-db-ja.com

415エラーを修正するためにaxiosヘッダーのContent-Typeを変更する

私はaxios postリクエストを通じてファイルをバックエンドに送信しようとしています。

これは私が現在持っているエラーです:

cherrypy._cperror.HTTPError:(415、 'コンテンツタイプapplication/json、text/javascriptのエンティティが必要です')

私が読んだ内容から、投稿リクエストのContent-Typeを変更する必要があります。私は現在、次のように変更しようとしているのを見回しています。

handleUploadButton(e){
            const upload_file = this.state.file;
            const formData = new FormData();
            formData.append('file', upload_file);
            const request = axios.post(someUrl, formData, {headers: {
                "Content-Type": "application/json"}
            })
                .then(function (response) {
                    console.log('successfully uploaded', upload_file);
                });
    }

関連があるかどうかはわかりませんが、これらはすべてreactjsフォームを介して行われます。これは私の現在のContent-Typeです:Content-Type:multipart/form-data;境界= ---- WebKitFormBoundaryBwjjjGuJEySeXdRU

ここからどこへ行くべきか分かりません。どんな助けでも大歓迎です。

6
theJuls
SignIn = () => {
    console.log('login clicked')
    let data = JSON.stringify({
        password: this.state.password,
        username: this.state.email
    })

    axios.post('url', data, {
        headers: {
            'Content-Type': 'application/json',
        }
    }
    )
}
8
Ben Ahlander

これは私のために働きました:

const formData = new FormData();
formData.append('data', new Blob([JSON.stringify(data)], { type: 'application/json'}));
formData.append('file', file);

return axios.put(`${url}`, formData)
  .then((response) => { console.log(response) })
  .catch((error) => { console.log(error) })

これは、同様の問題の別の回答からとったものです。元の回答 ここ を確認できます。

1
Daniel Cortes

さまざまなタイプcatch()エラーを修正できます

.catch((error)=> {
              if(error.response){
                this.errors(error.response.message);
              }else if (error.request) {
                console.log('error.request');
              } else {
                console.log('Error', error);
              }
              console.log("rejected");
});

続きを読む>>

1
Rizo