2017-04-07 8 views
1

こんにちは、私は何度もタールファイルをアップロードしようとしていますが、毎回失敗しています。私はこのJS、UI、https req/resドメインの新機能です。 私の環境は:nodeJS、バックエンド用のJavaScriptです。フロントエンド用のReactJS。 マシンからリモートサーバーにtarファイルをアップロードする必要があります。javaスクリプトでフェッチAPIを使用してファイルをアップロードする

ファイルをアップロードするためにフェッチリクエストを作成するフロントエンドコードは次のとおりです。

export function postXCCDF() { 
    let _headers = { 
    'Accept': 'application/json, application/xml, text/plain, text/html, *.*', 
    'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu' 
    }; 

    var formData = new FormData(); 
    formData.append('type', 'file'); 
    formData.append('file', 'C:\\MyDrive\\rules.zip'); 

    let uri = '/rest/policy'; 

    const options = { method: 'POST', headers: _headers, body: formData }; 
    return fetch(`${_host}${urlPrefix}${uri}`, options) 
    .then(processStatus) 
    .then(response => response.json()); 

} 

ここで、私はtarファイルを受け取ることを期待しているバックエンドコードです。

router.post('/policy', function(req, res) { 
    console.log('hey I reached here'); 
    console.log('hemant req',req.body.formData); // prints hemant req undefined 
    // Dont know how to save it to some directory. ??? :(
}); 

私の考えは、遠隔地にあるサーバーにtarファイルをアップロードすることです。私はたくさんの方法を試しましたが、何も助けてくれないようです。

+1

ブラウザのdevtoolsコンソールとバックエンドサーバーのログに表示されるエラーメッセージのテキストを提供するために、回答を編集/更新するにはhttps://stackoverflow.com/review/suggested-edits/15772861を使用してください。 devtoolsのNetworkパネルを見て、リクエストが実際に送信されているかどうか、リクエストヘッダが何であるか、そしてどのレスポンスが受信されているのか、そしてどのヘッダが – sideshowbarker

答えて

1

body-parserモジュールは、マルチパートではなくJSONおよびurlencodedフォームの送信のみを処理します(ファイルをアップロードしている場合)。

マルチパートの場合、あなたはconnect-busboyまたはmulterまたはconnect-multipartyようなものを使用する必要があるだろう(マルチパーティ/恐るべきは、もともと急行bodyParserミドルウェアで使用されたものです)。

関連する問題