【发布时间】:2016-10-20 09:27:07
【问题描述】:
我让我的 React 客户端将带有 fetch 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 实际上是单个文件数组,所以我需要将文件提取出来。
【问题讨论】:
-
您是否尝试过 file.read() 而不是从表单中返回文件对象?我认为它看起来像 csv_data.read() ?
-
是的,我收到一条错误消息,指出 unicode 对象没有方法 .read :/
-
您是否尝试过将
Content-Type明确指定为application/x-www-form-urlencoded或multipart/form-data?
标签: javascript python reactjs flask fetch-api