Tôi có ứng dụng React của mình đăng một tệp với lệnh tìm nạp api đến điểm cuối '/ dataset'.Máy chủ Flask không thể đọc tệp được tải lên theo yêu cầu POST
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
};
Máy chủ Flask của tôi được cho là sẽ nhặt nó lên.
@app.route('/dataset', methods=['POST'])
def dataset():
print request.get_data()
csv_data = request.form['file']
print csv_data
return '{ "fake_json":100}', 200
Tuy nhiên, đối tượng csv_data
chỉ đơn giản là một chuỗi unicode, '[object File]'
Mã
print "form:", request.form
print "files:", request.files
lợi nhuận
ImmutableMultiDict([('file', u'[object File]')])
ImmutableMultiDict([])
Làm thế nào để tôi nhận được các nội dung thực tế của CSV tập tin?
=== CHỈNH SỬA: Đã giải quyết ===
biến csv thực ra là một mảng tệp duy nhất, vì vậy tôi cần trích xuất tệp.
bạn đã thử tệp.read() thay vì trả về đối tượng tệp từ biểu mẫu chưa? tôi nghĩ rằng nó sẽ giống như, csv_data.read()? – glls
Vâng, tôi gặp lỗi khi nói rằng đối tượng unicode không có phương thức .read:/ – jldork
'csv' là gì khi bạn gọi đó là' uploadDoc'? Bạn có chắc đó là thứ mà 'FormData' hiểu là đầu vào của tệp không? – davidism