我正在尝试上传文件以及它的附加字段使用react.js和python(flask)。用户可以上传多个文件。
为了添加更多功能,我在一个数组中推送了Name和File,该数组存储在组件的状态中,如下所示。
this.state = {
files:[{name:'', file:''}]
}
我在flask中创建了一个rest api来上传文件和保存数据。并以formData()
的形式传递this.state
数据。我正在尝试在flask中获取上传的文件,如下所示。
let formData = this.state;
const fd = new FormData();
for(let k in formData){
fd.append(k,formData[k]);
};
Rest API-
@mod_upload.route('/upload',methods=['POST'])
def upload():
if request.method == 'POST':
f = request.files['files']
print(f)
一切正常,但在上面的代码中,f
总是为空的,因为在formData()
中,我附加的是this.state.files
,这是一个数组,但它需要的是文件对象。
所以,我需要一些建议,如何在request.files['files']
中访问文件和字段值。
请帮帮我。谢谢
发布于 2019-10-01 02:52:19
尝尝这个。在追加表单数据时,请注意'files'
键。如果有效,请让我知道
更新的ANS
let formData = this.state;
const fd = new FormData();
for(const k of formData){
fd.append('files',k.file, k.name);
};
发布于 2019-10-01 15:09:49
您没有发送文件值,因此requests.files['files']
将为空。
fd.append("file", files[0]); // replace files[0] with your file
fd.append("name", "tmp");
现在,您将看到requests.files['file']
中填充了您的文件,而request.form
中填充了“name”键及其值。
注意,它不是填充requests.files
的键名,它是根据它的值填充的(它应该是文件对象)
您可以为file1
元数据创建类似于name1
的结构,为file2
元数据创建类似于name2
的结构。
https://stackoverflow.com/questions/58173019
复制相似问题