Wie schlimm ist es, wenn Benutzer Dateien mit nationalen Zeichen im Dateinamen hochladen und speichern sollen?

8

Unser CMS akzeptiert Dateien mit nationalen Zeichen in ihren Namen und speichert sie problemlos auf dem Server. Aber wie schlimm ist ein solcher Ansatz? Zum Beispiel ist es möglich, Dateien mit Dateinamen in Hebräisch oder Arabisch oder in einer anderen Sprache mit nicht-lateinischen Alphabet zu speichern? Gibt es einen standardisierten Weg, um mit diesen umzugehen?

    
jayarjo 02.12.2010, 08:01
quelle

6 Antworten

7
___ qstnhdr ___ Wie schlimm ist es, wenn Benutzer Dateien mit nationalen Zeichen im Dateinamen hochladen und speichern sollen? ___ antwort4333076 ___

Speichern Sie den ursprünglichen Dateinamen in einer Datenbank, für den Fall, dass Sie ihn jemals benötigen.

Benennen Sie dann den Dateinamen mit einer eindeutigen alphanumerischen ID um, wobei Sie die ursprüngliche Dateierweiterung beibehalten.

Wenn Sie viele Dateien erwarten, sollten Sie Verzeichnisse erstellen, um die Dateien zu gruppieren. Die Verwendung von Jahr, Monat, Tag, Stunde und Minute ist normalerweise ausreichend für die meisten. Zum Beispiel:

%Vor%

Ja, ich habe Erfahrung mit massiven MP3-Sammlungen, die berüchtigt dafür sind, in der Sprache des Landes, in dem der Song entsteht, benannt zu werden, was an mehreren Stellen Probleme verursachen kann.

    
___ qstntxt ___

Unser CMS akzeptiert Dateien mit nationalen Zeichen in ihren Namen und speichert sie problemlos auf dem Server. Aber wie schlimm ist ein solcher Ansatz? Zum Beispiel ist es möglich, Dateien mit Dateinamen in Hebräisch oder Arabisch oder in einer anderen Sprache mit nicht-lateinischen Alphabet zu speichern? Gibt es einen standardisierten Weg, um mit diesen umzugehen?

    
___ antwort4332981 ___

Ein Standardweg wäre, selbst eindeutige Namen zu generieren und den ursprünglichen Dateinamen irgendwo anders zu speichern. In der Regel, auch wenn das zugrunde liegende Betriebssystem und Dateisystem beliebige Unicode-Zeichen im Dateinamen zulassen, möchten Sie nicht, dass Benutzer über Dateinamen auf Ihrem Server entscheiden. Dies kann gewisse Risiken verursachen und zu Problemen führen, z. verursacht durch zu lange Namen oder Dateisystemkollisionen. Beispiele für Websites, die das tun, wären Facebook, flickr und viele andere.

Zum Erzeugen des eindeutigen Dateinamens wären Guid-Werte eine gute Wahl.

    
___ answer4332912 ___

Es ist eine ausgezeichnete Idee. Als Ungar bin ich ziemlich genervt, wenn ich keine Charaktere wie áÉŰÖÜúÓÚŰÉÍí benutzen darf:)

    
___ tag123fileupload ___ Eine Methode oder Aktion zum Übertragen einer Datei von einem Client zu einem Server. ___ tag123internationalisierung ___ Internationalisierung (i18n: repräsentiert "internationalisierung" als "ich", gefolgt von 18 weiteren Buchstaben, gefolgt von "n") ist der Prozess der Planung und Implementierung von Produkten und Dienstleistungen so dass sie leicht an bestimmte lokale Sprachen und Kulturen angepasst werden können, ein Prozess namens Lokalisierung. Der Internationalisierungsprozess wird manchmal als Übersetzungs- oder Lokalisierungsaktivierung bezeichnet. ___ answer4332971 ___

Auf einem Unix-Server ist es technisch machbar und einfach, jedes Unicode-Zeichen im Dateinamen zu akzeptieren und Dateinamen vor dem Speichern in UTF-8 zu konvertieren. Bei der Konvertierung können jedoch Fehler auftreten (in der HTML-Template-Engine oder im Web-Framework, die Sie verwenden, oder im Webbrowser des Benutzers). Daher können sich einige Benutzer beschweren, dass einige hochgeladene Dateien nicht mehr vorhanden sind. Die Ursache könnte eine fehlerhafte Dateinamen-Konvertierung sein. Wenn alle Zeichen im Dateinamen oder nicht-lateinisch sind und Sie (als Softwareentwickler) diese Fremdsprache nicht sprechen, dann überlegen Sie, was mit der Datei passiert ist.

    
___ tag123Dateinamen ___ Dateinamen sind Metadaten über eine Datei; Eine Zeichenfolge, die zur eindeutigen Identifizierung einer Datei verwendet wird, die im Dateisystem eines Computers gespeichert ist. ___ answer4332942 ___

Es gibt eine Menge Software, die Fehler im Umgang mit solchen Dateinamen hat, besonders unter Windows.

Ausblenden: Beispiel: Ich konnte das Android SDK nicht verwenden (ohne einen neuen Benutzer zu erstellen), weil ich einen é in meinem Benutzernamen hatte. Ich stieß auch auf ein ähnliches Problem mit dem Intel C ++ Compiler.

Software wird normalerweise mit solchen Dateinamen nicht richtig getestet. Die Windows-API bietet weiterhin "ANSI" -kodierte Versionen von Funktionen, und viele Entwickler scheinen die möglichen Probleme nicht zu verstehen. Ich komme auch immer wieder auf Webseiten, die meinen Namen durcheinander bringen.

Ich sage nicht, dass solche Dateinamen nicht erlaubt sind, tatsächlich würde ich im 21. Jahrhundert erwarten, dass ich solche Zeichen überall verwenden kann. Aber sei darauf vorbereitet, dass du auf Probleme stoßen kannst.

    
___ answer4332908 ___

Es ist in Ordnung, solange Sie den Zeichensatz aus den Headern in der Anfrage erkennen und intern einen konsistenten Zeichensatz (wie UTF-8) verwenden.

    
___
Dirk Vollmar 02.12.2010, 08:16
quelle
4
___ qstnhdr ___ Wie schlimm ist es, wenn Benutzer Dateien mit nationalen Zeichen im Dateinamen hochladen und speichern sollen? ___ antwort4333076 ___

Speichern Sie den ursprünglichen Dateinamen in einer Datenbank, für den Fall, dass Sie ihn jemals benötigen.

Benennen Sie dann den Dateinamen mit einer eindeutigen alphanumerischen ID um, wobei Sie die ursprüngliche Dateierweiterung beibehalten.

Wenn Sie viele Dateien erwarten, sollten Sie Verzeichnisse erstellen, um die Dateien zu gruppieren. Die Verwendung von Jahr, Monat, Tag, Stunde und Minute ist normalerweise ausreichend für die meisten. Zum Beispiel:

%Vor%

Ja, ich habe Erfahrung mit massiven MP3-Sammlungen, die berüchtigt dafür sind, in der Sprache des Landes, in dem der Song entsteht, benannt zu werden, was an mehreren Stellen Probleme verursachen kann.

    
___ qstntxt ___

Unser CMS akzeptiert Dateien mit nationalen Zeichen in ihren Namen und speichert sie problemlos auf dem Server. Aber wie schlimm ist ein solcher Ansatz? Zum Beispiel ist es möglich, Dateien mit Dateinamen in Hebräisch oder Arabisch oder in einer anderen Sprache mit nicht-lateinischen Alphabet zu speichern? Gibt es einen standardisierten Weg, um mit diesen umzugehen?

    
___ antwort4332981 ___

Ein Standardweg wäre, selbst eindeutige Namen zu generieren und den ursprünglichen Dateinamen irgendwo anders zu speichern. In der Regel, auch wenn das zugrunde liegende Betriebssystem und Dateisystem beliebige Unicode-Zeichen im Dateinamen zulassen, möchten Sie nicht, dass Benutzer über Dateinamen auf Ihrem Server entscheiden. Dies kann gewisse Risiken verursachen und zu Problemen führen, z. verursacht durch zu lange Namen oder Dateisystemkollisionen. Beispiele für Websites, die das tun, wären Facebook, flickr und viele andere.

Zum Erzeugen des eindeutigen Dateinamens wären Guid-Werte eine gute Wahl.

    
___ answer4332912 ___

Es ist eine ausgezeichnete Idee. Als Ungar bin ich ziemlich genervt, wenn ich keine Charaktere wie áÉŰÖÜúÓÚŰÉÍí benutzen darf:)

    
___ tag123fileupload ___ Eine Methode oder Aktion zum Übertragen einer Datei von einem Client zu einem Server. ___ tag123internationalisierung ___ Internationalisierung (i18n: repräsentiert "internationalisierung" als "ich", gefolgt von 18 weiteren Buchstaben, gefolgt von "n") ist der Prozess der Planung und Implementierung von Produkten und Dienstleistungen so dass sie leicht an bestimmte lokale Sprachen und Kulturen angepasst werden können, ein Prozess namens Lokalisierung. Der Internationalisierungsprozess wird manchmal als Übersetzungs- oder Lokalisierungsaktivierung bezeichnet. ___ answer4332971 ___

Auf einem Unix-Server ist es technisch machbar und einfach, jedes Unicode-Zeichen im Dateinamen zu akzeptieren und Dateinamen vor dem Speichern in UTF-8 zu konvertieren. Bei der Konvertierung können jedoch Fehler auftreten (in der HTML-Template-Engine oder im Web-Framework, die Sie verwenden, oder im Webbrowser des Benutzers). Daher können sich einige Benutzer beschweren, dass einige hochgeladene Dateien nicht mehr vorhanden sind. Die Ursache könnte eine fehlerhafte Dateinamen-Konvertierung sein. Wenn alle Zeichen im Dateinamen oder nicht-lateinisch sind und Sie (als Softwareentwickler) diese Fremdsprache nicht sprechen, dann überlegen Sie, was mit der Datei passiert ist.

    
___ tag123Dateinamen ___ Dateinamen sind Metadaten über eine Datei; Eine Zeichenfolge, die zur eindeutigen Identifizierung einer Datei verwendet wird, die im Dateisystem eines Computers gespeichert ist. ___ answer4332942 ___

Es gibt eine Menge Software, die Fehler im Umgang mit solchen Dateinamen hat, besonders unter Windows.

Ausblenden: Beispiel: Ich konnte das Android SDK nicht verwenden (ohne einen neuen Benutzer zu erstellen), weil ich einen é in meinem Benutzernamen hatte. Ich stieß auch auf ein ähnliches Problem mit dem Intel C ++ Compiler.

Software wird normalerweise mit solchen Dateinamen nicht richtig getestet. Die Windows-API bietet weiterhin "ANSI" -kodierte Versionen von Funktionen, und viele Entwickler scheinen die möglichen Probleme nicht zu verstehen. Ich komme auch immer wieder auf Webseiten, die meinen Namen durcheinander bringen.

Ich sage nicht, dass solche Dateinamen nicht erlaubt sind, tatsächlich würde ich im 21. Jahrhundert erwarten, dass ich solche Zeichen überall verwenden kann. Aber sei darauf vorbereitet, dass du auf Probleme stoßen kannst.

    
___ answer4332908 ___

Es ist in Ordnung, solange Sie den Zeichensatz aus den Headern in der Anfrage erkennen und intern einen konsistenten Zeichensatz (wie UTF-8) verwenden.

    
___
zaf 02.12.2010 08:32
quelle
2

Es ist in Ordnung, solange Sie den Zeichensatz aus den Headern in der Anfrage erkennen und intern einen konsistenten Zeichensatz (wie UTF-8) verwenden.

    
Ignacio Vazquez-Abrams 02.12.2010 08:04
quelle
1

Auf einem Unix-Server ist es technisch machbar und einfach, jedes Unicode-Zeichen im Dateinamen zu akzeptieren und Dateinamen vor dem Speichern in UTF-8 zu konvertieren. Bei der Konvertierung können jedoch Fehler auftreten (in der HTML-Template-Engine oder im Web-Framework, die Sie verwenden, oder im Webbrowser des Benutzers). Daher können sich einige Benutzer beschweren, dass einige hochgeladene Dateien nicht mehr vorhanden sind. Die Ursache könnte eine fehlerhafte Dateinamen-Konvertierung sein. Wenn alle Zeichen im Dateinamen oder nicht-lateinisch sind und Sie (als Softwareentwickler) diese Fremdsprache nicht sprechen, dann überlegen Sie, was mit der Datei passiert ist.

    
pts 02.12.2010 08:16
quelle
0

Es ist eine ausgezeichnete Idee. Als Ungar bin ich ziemlich genervt, wenn ich keine Charaktere wie áÉŰÖÜúÓÚŰÉÍí benutzen darf:)

    
neo2862 02.12.2010 08:05
quelle
0

Es gibt eine Menge Software, die Fehler im Umgang mit solchen Dateinamen hat, besonders unter Windows.

Ausblenden: Beispiel: Ich konnte das Android SDK nicht verwenden (ohne einen neuen Benutzer zu erstellen), weil ich einen é in meinem Benutzernamen hatte. Ich stieß auch auf ein ähnliches Problem mit dem Intel C ++ Compiler.

Software wird normalerweise mit solchen Dateinamen nicht richtig getestet. Die Windows-API bietet weiterhin "ANSI" -kodierte Versionen von Funktionen, und viele Entwickler scheinen die möglichen Probleme nicht zu verstehen. Ich komme auch immer wieder auf Webseiten, die meinen Namen durcheinander bringen.

Ich sage nicht, dass solche Dateinamen nicht erlaubt sind, tatsächlich würde ich im 21. Jahrhundert erwarten, dass ich solche Zeichen überall verwenden kann. Aber sei darauf vorbereitet, dass du auf Probleme stoßen kannst.

    
darklon 02.12.2010 08:11
quelle