gpt4 book ai didi

javascript - Flask 服务器无法读取 POST 请求上传的文件

转载 作者:数据小太阳 更新时间:2023-10-29 05:29:05 26 4
gpt4 key购买 nike

我让我的 React 客户端将带有获取 API 的文件发布到“/dataset”端点。

import 'whatwg-fetch';

uploadData(csv) {
this.dataset = csv;

fetch('/dataset', {
method: 'POST',
body: this._fileToFormData(csv)
}).then(
(response) => {
console.log(response);
}
).catch( () => {} );
};

_fileToFormData(file) {
var formData = new FormData();
formData.append('file', file);
return formData
};

我的 Flask 服务器应该会接收它。

@app.route('/dataset', methods=['POST'])
def dataset():
print request.get_data()
csv_data = request.form['file']
print csv_data
return '{ "fake_json":100}', 200

但是,csv_data 对象只是一个 unicode 字符串,'[object File]'

代码

print "form:", request.form
print "files:", request.files

返回

ImmutableMultiDict([('file', u'[object File]')])
ImmutableMultiDict([])

如何获取 CSV 文件的实际内容?

=== 编辑:已解决 ===

变量 csv 实际上是一个文件数组,所以我需要将文件提取出来。

最佳答案

上传的文件在 request.files 中可用,而不是在 request.form 中可用。这些值是类似文件的对象,因此要获取您需要读取文件的数据。

data = request.files['file'].read()

查看 flask docs有关处理上传的一些示例。


您还需要正确上传文件。 GitHub 的 fetch polyfill有一个使用 FormData 正确格式化正文的示例。您必须将单个文件或输入传递给每次调用 append

var input = document.querySelector('input[type="file"]')
var data = new FormData()
data.append('file', input.files[0])

fetch('/dataset', {
method: 'POST',
body: data
})

关于javascript - Flask 服务器无法读取 POST 请求上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37900239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com