django: Dateiupload und unicode...

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Weiß jemand wie man mit dem encoding bei einem Datei Upload umgeht?

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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/

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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.
TUFKAB – the user formerly known as blackbird
Antworten