2017-03-21 2 views
1

Ich muss eine Datei in einem FileField gespeichert öffnen, erstellen Sie eine Liste mit dem Inhalt der Datei und übergeben Sie es an die Vorlage. Wie kann ich die Datei öffnen? Ich habe versucht, with open(stocklist.csv_file.url, "wb"), aber es gab mir einen Fehler "Datei nicht gefunden". Wenn ich dies tun:Django wie Datei in FileField zu öffnen

csv_file = stocklist.csv_file.open(mode="rb") 

csv_file ist None. Es gibt jedoch eine Datei. Wenn ich print("stocklist.csv_file.url: %s" % stocklist.csv_file.url) drucken ich

stocklist.csv_file erhalten: https://d391vo1.cloudfront.net/csv_pricechart/...ss7.csv

Und wenn ich an den Admin gehen, kann ich die Datei herunterladen. Also, wie kann ich eine Datei öffnen, die in einem FileField gespeichert ist?

+0

Was ist Ihr Speicher Back-End? –

+0

Es ist ein AWS-Bucket – alejoss

Antwort

2

Die .open() öffnet den Dateicursor aber gibt es nicht zurück, da es von Ihrem Speicher abhängt (Dateisystem, S3, FTP ...). Einmal geöffnet, you can use .read() to iterate over the file content.

stocklist.csv_file.open(mode="rb") 
content = stocklist.csv_file.read() 
stocklist.csv_file.close() 

Wenn Sie speziell mit Dateideskriptor arbeiten, dann können Sie Ihre Speicherfunktionalität verwenden:

from django.core.files.storage import DefaultStorage 
storage = DefaultStorage() 
f = storage.open(stocklist.csv_file.name, mode='rb') 
Verwandte Themen