Ich habe meinen React-Client eine Datei mit der Fetch-API an den Endpunkt '/ Dataset' senden lassen.Flask-Server kann keine Datei lesen, die durch POST-Anforderung hochgeladen wurde
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
};
Mein Flask-Server soll es abholen.
@app.route('/dataset', methods=['POST'])
def dataset():
print request.get_data()
csv_data = request.form['file']
print csv_data
return '{ "fake_json":100}', 200
jedoch das csv_data
Objekt ist einfach eine Unicode-String, '[object File]'
Der Code
print "form:", request.form
print "files:", request.files
kehrt
ImmutableMultiDict([('file', u'[object File]')])
ImmutableMultiDict([])
Wie kann ich den eigentlichen Inhalt der CSV erhalten Datei?
=== EDIT: Gelöst ===
die Variable CSV war tatsächlich ein einzelner Datei-Array, so dass ich erforderlich, um die Datei aus zu extrahieren.
Haben Sie file.read() ausprobiert, anstatt das Dateiobjekt aus dem Formular zurückzugeben? Ich denke, es würde aussehen, csv_data.read()? – glls
Ja, ich bekomme eine Fehlermeldung, dass das Unicode-Objekt nicht über die Methode .read verfügt:/ – jldork
Was ist 'csv', wenn Sie das' uploadDoc' aufrufen? Sind Sie sicher, dass 'FormData' etwas als Dateieingabe versteht? – davidism