Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery reactjsajax文件上传_Jquery_Ajax_File Upload_Reactjs - Fatal编程技术网

Jquery reactjsajax文件上传

Jquery reactjsajax文件上传,jquery,ajax,file-upload,reactjs,Jquery,Ajax,File Upload,Reactjs,我正试图上传一个带有React的文件,但我不确定这样做的最佳方式。我正在尝试在更改时存储文件,但这似乎不起作用。我当前在提交时收到错误未捕获类型错误:非法调用 是否有更好的方法使用React上载文件 文件更改和上载功能: changeFile: function(e) { this.setState({csvFile: e.target.files[0]}); }, importFile: function() { data =

我正试图上传一个带有React的文件,但我不确定这样做的最佳方式。我正在尝试在更改时存储文件,但这似乎不起作用。我当前在提交时收到错误
未捕获类型错误:非法调用

是否有更好的方法使用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:


进口

设置状态是一个异步函数,因此无法立即获取状态。
您可以尝试使用callback检查您的文件

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

ref:

呃,我只需要在我的ajax调用中添加以下内容:

processData: false,
contentType: false


感谢使用react file uploader,但这会在提交时产生一个新问题:
Uncaught TypeError:invalign invocation
这是一个jQuery错误。使用formdata或jQuery配置。看见
processData: false,
contentType: false
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!");
            });
        },