Ho il mio client React che invia un file con l'API di recupero all'endpoint '/ dataset'.Il server Flask non può leggere il file caricato dalla richiesta 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
};
Il mio assistente Flask si suppone per raccoglierlo.
@app.route('/dataset', methods=['POST'])
def dataset():
print request.get_data()
csv_data = request.form['file']
print csv_data
return '{ "fake_json":100}', 200
Tuttavia, l'oggetto csv_data
è semplicemente una stringa unicode, '[object File]'
Il codice
print "form:", request.form
print "files:", request.files
rendimenti
ImmutableMultiDict([('file', u'[object File]')])
ImmutableMultiDict([])
Come faccio ad avere il contenuto effettivo del CSV file?
=== EDIT: Risolto ===
CSV variabile era in realtà un singolo array di file, quindi ho bisogno di estrarre il file fuori.
hai provato file.read() anziché restituire l'oggetto file dal modulo? penso che sembrerebbe, csv_data.read()? – glls
Sì, viene visualizzato un errore che dice che l'oggetto Unicode non ha il metodo. Read:/ – jldork
Che cos'è 'csv' quando chiami quel' uploadDoc'? Sei sicuro che sia qualcosa che 'FormData' capisce di essere un input di file? – davidism