2016-04-11 26 views
0

私はReactでファイルをアップロードしようとしていますが、そのための最善の方法がわかりません。私は変更時にファイルを格納しようとしていますが、動作していないようです。私は現在、送信時にエラーUncaught TypeError: Illegal invocationを取得しています。ReactJS Ajaxファイルアップロード

Reactでファイルをアップロードする方が良いですか?


ファイル変更&アップロード機能:

changeFile: function(e) { 
      this.setState({csvFile: e.target.files[0]}); 
     }, 

importFile: function() { 
      data = new FormData(); 
      data.append('file', this.state.csvFile); 
      $.ajax({ 
       type: "POST", 
       url: "/csv/import", 
       data: data, 
       dataType: "JSON" 
      }).done(function(json){ 
       alert("hooray!"); 
      }); 
     }, 

JSX:

<div> 
     <input type="file" onChange={this.changeFile}/> 
     <button onClick={this.importFile}>Import</button> 
    </div> 
+0

使用反応し、ファイルアップローダーをhttps://www.npmjs.com/package/react-file-uploader –

答えて

1

うわは、私はちょうど私のAJAX呼び出しに以下を追加する必要が判明:

processData: false, 
contentType: false 

OR

importFile: function() { 
      data = new FormData(); 
      data.append('file', this.state.csvFile); 
      $.ajax({ 
       type: "POST", 
       url: "/csv/import", 
       data: data, 
       dataType: "JSON", 
       processData: false, 
       contentType: false 
      }).done(function(json){ 
       alert("hooray!"); 
      }); 
     }, 
1

はSETSTATEは非同期関数であるので、あなたはすぐに状態を得るカント。
ファイルをチェックするためにコールバックを試すことができます。

this.setState({ 
    ... 
}, function(){ 
    ... 
    console.log(...); 
}); 

REF:https://facebook.github.io/react/docs/component-api.html#setstate

+0

ありがとうございますが、これは送信時に新しい問題を引き起こします: 'Uncau ght TypeError:不正な呼び出し ' –

+1

これはjQueryエラーです。 formdataまたはjQueryの設定を使用します。 を参照してください。http://stackoverflow.com/questions/12755945/jquery-and-html-formdata-returns-uncaught-typeerror-illegal-invocation – jackypan1989

関連する問題