如何使用附加字段 react.js flask 上传多个文件
How to upload multiple files with additional field react.js flask
我正在尝试使用 react.js 和 python(flask) 上传文件及其附加字段。用户可以上传多个文件。
为了添加更多功能,我将名称和文件推送到一个数组中,该数组存储在组件的状态中,如下所示。
this.state = {
files:[{name:'', file:''}]
}
并且我在flask中创建了一个restapi来上传文件和保存数据。并将 this.state
数据作为 formData()
传递。我正在尝试像下面这样在烧瓶中上传文件。
let formData = this.state;
const fd = new FormData();
for(let k in formData){
fd.append(k,formData[k]);
};
休息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']
中的文件和字段值。
请帮助我。
谢谢
试试这个。在附加表单数据时注意 'files'
键。让我知道它是否有效
更新的答案
let formData = this.state;
const fd = new FormData();
for(const k of formData){
fd.append('files',k.file, k.name);
};
您没有发送文件值,因此 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
的结构。
我正在尝试使用 react.js 和 python(flask) 上传文件及其附加字段。用户可以上传多个文件。
为了添加更多功能,我将名称和文件推送到一个数组中,该数组存储在组件的状态中,如下所示。
this.state = {
files:[{name:'', file:''}]
}
并且我在flask中创建了一个restapi来上传文件和保存数据。并将 this.state
数据作为 formData()
传递。我正在尝试像下面这样在烧瓶中上传文件。
let formData = this.state;
const fd = new FormData();
for(let k in formData){
fd.append(k,formData[k]);
};
休息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']
中的文件和字段值。
请帮助我。 谢谢
试试这个。在附加表单数据时注意 'files'
键。让我知道它是否有效
更新的答案
let formData = this.state;
const fd = new FormData();
for(const k of formData){
fd.append('files',k.file, k.name);
};
您没有发送文件值,因此 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
的结构。