Javascript flask&reactjs文件上载不工作

Javascript flask&reactjs文件上载不工作,javascript,python,reactjs,flask,Javascript,Python,Reactjs,Flask,我是PythonFlask的新手,我在后端使用flask,在前端使用react js,在数据库中使用pymongo。我想将文件从ReactJs上传到flask服务器,在执行第二种方法时,我遇到了一个错误,我该怎么做呢。下面是我尝试过的代码 我试过两个例子,一个有效,另一个无效,我不知道为什么 werkzeug.exceptions.BadRequestKeyError:400错误请求:浏览器或代理发送了此服务器无法理解的请求。 KeyError:“文件” 直接将文件发送到API。案例1 Pyth

我是PythonFlask的新手,我在后端使用flask,在前端使用react js,在数据库中使用pymongo。我想将文件从ReactJs上传到flask服务器,在执行第二种方法时,我遇到了一个错误,我该怎么做呢。下面是我尝试过的代码

我试过两个例子,一个有效,另一个无效,我不知道为什么

werkzeug.exceptions.BadRequestKeyError:400错误请求:浏览器或代理发送了此服务器无法理解的请求。 KeyError:“文件”

直接将文件发送到API。案例1 Python代码

导入操作系统 从烧瓶导入烧瓶、闪存、请求、重定向、url_ 从werkzeug.utils导入安全文件名 UPLOAD_FOLDER='/path/to/the/uploads' 允许的扩展名=集['png'、'jpg'、'jpeg'] app=烧瓶名称__ app.config['UPLOAD\u FOLDER']=UPLOAD\u FOLDER @app.route'/api/users/add_photo',methods=['POST',GET] def上传文件: 如果request.method==“POST”: 检查post请求是否包含文件部分 如果“文件”不在request.files中: flash“无文件部分” 返回重定向请求.url file=request.files['file'] 如果用户未选择文件,则浏览器也会 提交一个没有文件名的空部分 如果file.filename==: 闪存“未选择文件” 返回重定向请求.url 如果文件和允许\u filefile.filename: filename=secure\u filenamefile.filename file.saveos.path.joinapp.config['UPLOAD\u FOLDER'],文件名 image=uploadopenfilename,“rb” user\u id=user.insert{file:image} 返回jsonify{'result':文件上传成功!!!} onSubmitImagee{ 让file=this.state.file; 设formData=newformdata; formData.appendfile,文件; this.props.imageUploadformData; } 上面的例子非常有效

将文件发送到对象中的API。案例2 Python代码

导入操作系统 从烧瓶导入烧瓶、闪存、请求、重定向、url_ 从werkzeug.utils导入安全文件名 UPLOAD_FOLDER='/path/to/the/uploads' 允许的扩展名=集['png'、'jpg'、'jpeg'] app=烧瓶名称__ app.config['UPLOAD\u FOLDER']=UPLOAD\u FOLDER @app.route'/api/users/add_photo',methods=['POST',GET] def上传文件: 如果request.method==“POST”: 检查post请求是否包含文件部分 如果“文件”不在request.files中: flash“无文件部分” 返回重定向请求.url file=request.files['file'] name=request.get_jsonforce=True[name] last\u name=request.get\u jsonforce=True[last\u name] email=request.get_jsonforce=True[email] 如果用户未选择文件,则浏览器也会 提交一个没有文件名的空部分 如果file.filename==: 闪存“未选择文件” 返回重定向请求.url 如果文件和允许\u filefile.filename: filename=secure\u filenamefile.filename file.saveos.path.joinapp.config['UPLOAD\u FOLDER'],文件名 image=uploadopenfilename,“rb” user\u id=user.insert{file:image,name:name,last\u name:last\u name,email:email} 返回jsonify{'result':文件上传成功!!!} onSubmitImagee{ 让file=this.state.file; 设formData=newformdata; formData.appendfile,文件; 常数数据={ 文件:formData 名称:this.state.name 姓氏:this.state.last_name 电子邮件:this.state.last_name }; this.props.imageUploaddata; }
我不知道为什么第一个有效,第二个无效。我想实现第二个示例,因为还有其他数据,如姓名、姓氏、带有图像文件的电子邮件。

您需要将数据添加到FormData-ie中

let file = this.state.file;
let formData = new FormData();
formData.append("file", file);
formData.append("name", this.state.name);
formData.append("last_name", this.state.last_name)
formData.append("email", this.state.last_name)
this.props.imageUpload(formData);

您需要将数据添加到FormData-ie

let file = this.state.file;
let formData = new FormData();
formData.append("file", file);
formData.append("name", this.state.name);
formData.append("last_name", this.state.last_name)
formData.append("email", this.state.last_name)
this.props.imageUpload(formData);

如果我想上传多个文件和其他数据,而不是一个文件,我必须更改哪些代码以及python中的react?如果我想上传多个文件和其他数据,而不是单个文件,我必须更改哪些代码以及python中的react??