django: Dateiupload und unicode...

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

django: Dateiupload und unicode...

Beitragvon jens » Mittwoch 19. März 2008, 11:02

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

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: django: Dateiupload und unicode...

Beitragvon Leonidas » Mittwoch 19. März 2008, 11:34

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 Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 19. März 2008, 11:50

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Donnerstag 20. März 2008, 09:32

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/

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

Beitragvon mitsuhiko » Donnerstag 20. März 2008, 09:51

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Donnerstag 20. März 2008, 09:56

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

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

Beitragvon mitsuhiko » Donnerstag 20. März 2008, 10:04

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder