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

时间:2016-06-18 18:20:35

标签: javascript python reactjs flask fetch-api

我让我的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实际上是单个文件数组,因此我需要提取文件。

1 个答案:

答案 0 :(得分:3)

上传的文件位于FROM java:7 ADD name-ws.jar app.jar RUN sh -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ,而不是request.files。这些值是类文件对象,因此要获取读取文件所需的数据。

request.form

有关使用上传的一些示例,请参阅Flask docs

您还需要正确上传文件。 GitHub的fetch polyfill有一个使用data = request.files['file'].read() 正确格式化正文的示例。您必须将单个文件或输入传递给每个FormData的调用。

append