2017-04-21 20 views
1

ユーザーはローカルファイルをブラウズしてjsonファイルを選択してアップロードできます。私はそれを直接インポートしたくない。その後、私はそれをいくつかのサーバーAPIに送り、jsonファイルからデータベースにデータを保存します。問題は、jsonファイルをアップロードする方法と、そこからサーバー側のAPIにデータを送信する方法です。React(クライアント側)の.jsonファイルをアップロードしてノード(サーバー側)に送信

JSONファイルには、次のようになります。{ "人":[{ "名": "ジョン"、年齢:23}、{ "名": "ジェーン"、年齢:25}]}

Iを私はそれを動作させるためにしようとしませんが、まだ運の下ルカのヒントを使用して、この

... 
    handleSubmit (e) { 
    e.preventDefault() 
    const fileUpload = this.refs.file.value; 
    } 

    render(): React.Element<any> { 
     return (
     ... 
     <form onSubmit={this.handleSubmit} encType="multipart/form-data"> 
      <input type="file" ref="file" accept=".json" id="fileInput" aria-describedby="fileHelp" /> 

     <button type="submit">Submit</button> 
     </form> 
    ) 

EDIT のようなコンポーネントを反応させてきました。私はこれを好きでした。

... 
    dropHandler (file) { 
    let formData = new FormData() 
    formData.append('file', file[0]) 

    request.post('/exchange') 
     .send(formData) 
     .end(function (err) { 
     if (err) { 
      console.log(err) 
     } 
     }) 
    } 

    render() { 
    return (
     ... 
     <Dropzone disableClick={false} multiple={false} onDrop={this.dropHandler}> 
      <div> Drop a json file, or click to add. </div> 
     </Dropzone> 

    ) 

server.js

app.post('/exchange', (req, res) => { 
    console.log(req.body) //when i upload json file I am hitting this route but getting undefined here 
}) 

答えて

2

これはReactJSとは関係ありません(私はいくつかのフェッチでエラーを得ていた)ファイルやたSuperAgentをdragingためNPMのドロップゾーンを使用しました。 fetchまたはAJAXを使用してファイルをアップロードする必要がありますので、FormDataが必要です。

let formData = new FormData() 
formData.append('file', fileUpload) 
fetch(url, { 
    method: 'post', 
    headers: { 
    // maybe you need headers, it depends from server implementation 
    }, 
    body: formData 
}); 

How to use FormData for ajax file upload

+0

おかげルカを参照してください。それは正しい方向へのプッシュです。私は私の質問でビットを変更しましたが、まだ運がありません。あなたは私にさらに教えてもらえますか? –

+0

Dropzoneは良い選択です。それと一緒に行く。 サーバーでは何を使用していますか?純粋なnode.jsまたはexpress?あなたはreq.bodyが見るべき正しい場所だと思っていますか? http://stackoverflow.com/questions/23114374/file-uploading-with-express-4-0-req-files-undefined BTW:問題がクライアントかサーバー上にあるかを理解するブラウザのリクエスト内容を調べてみてください –

+0

Lucaさん、ありがとうございました。 formDataは正しい方向だった。 –

関連する問題