Seite 1 von 1

django: Dateiupload und unicode...

Verfasst: Mittwoch 19. März 2008, 11:02
von jens
Weiß jemand wie man mit dem encoding bei einem Datei Upload umgeht?

Man muß wohl Textdateien anders handhaben als Binäre Dateien, oder?

Re: django: Dateiupload und unicode...

Verfasst: Mittwoch 19. März 2008, 11:34
von Leonidas
jens hat geschrieben:Man muß wohl Textdateien anders handhaben als Binäre Dateien, oder?
Nein, wieso? Du kannst Textdateien als binär ansehen, nur hat dann der Client beim Download die gleichen Zeilenenden ankommen wie der Uploader verwendet hat. Hängt halt ab ob das ein Problem für dich ist.

Verfasst: Mittwoch 19. März 2008, 11:50
von jens
Hm. Also ich glaube so einfach ist das nicht.

Ich nehme eine Datei entgegen und speicher die mit "wb" ab. Danach kann der User die Datei editieren, dazu nutzte ich newforms:

Code: Alles auswählen

    content = forms.CharField(
        widget=forms.Textarea(attrs = {'cols': '80', 'rows': '25'})
    )
Lese ich die Datei mit "rb" erhalte ich einen String. Das newforms Feld bleibt allerdings leer, wenn im Dateiinhalt non-ASCII Zeichen waren...

Ich könnte natürlich versuchen im Upload-Formular einfach accept-charset="utf-8" einzutragen und dann immer alles in UTF-8 machen. Wenn aber dann ein User eine Binär Datei hochläd, dürfte das schief gehen.
Sollte ich dann also hingehen und eine Checkbox im Upload Formular einfügen, ob es sich um eine Binärdatei handelt, oder eine Text-Datei?

EDIT: Nochmal nachgelesen: http://de.selfhtml.org/html/formulare/d ... nkodierung

Verfasst: Donnerstag 20. März 2008, 09:32
von jens
Das mit dem accept-charset="utf-8" bringt IMHO nicht wirklich was...

Gerade läuft eine Diskussion auf django-developers zu dem Thema:

http://groups.google.com/group/django-d ... 582609b9e/

Verfasst: Donnerstag 20. März 2008, 09:51
von mitsuhiko
jens hat geschrieben:Gerade läuft eine Diskussion auf django-developers zu dem Thema:
Nein. Da gehts um eine neue Upload API. Das was django mit uploads macht stimmt schon. Es ist deine Aufgabe das Encoding zu bekommen und die Daten zu verarbeiten.

Verfasst: Donnerstag 20. März 2008, 09:56
von jens
Ja und nein. Es geht zum größten Teil um die neue API, aber zwischendurch auch um das Encoding Problem:
http://groups.google.com/group/django-d ... 05d62337a4

Es ist schon richtig, das ich mich um das Encoding kümmern muß. Auf jeden Fall haben tests gezeigt, das ich nicht einfach alles als "binary" behandeln kann und es geht dann das editieren...

Verfasst: Donnerstag 20. März 2008, 10:04
von mitsuhiko
jens hat geschrieben:Ja und nein. Es geht zum größten Teil um die neue API, aber zwischendurch auch um das Encoding Problem:
http://groups.google.com/group/django-d ... 05d62337a4
Nein, da ging es um das Dateinamen Handling. Siehe weiter unten.
Es ist schon richtig, das ich mich um das Encoding kümmern muß. Auf jeden Fall haben tests gezeigt, das ich nicht einfach alles als "binary" behandeln kann und es geht dann das editieren...
Natürlich kannst du das nicht. Unicode sind nicht Binärdaten. Was du tun musst ist den Mimetype des eingehenden Uploads anzusehen und danach zu entscheiden wie du verfahren willst.