0
votes

Chaîne codée de base64 pour le nom de fichier

Je ne peux pas penser à un système d'exploitation (Linux, Windows, UNIX) où cela provoquerait un problème, mais peut-être que quelqu'un ici peut me dire si cette approche est indésirable.

J'aimerais utiliser une chaîne codée de base64 comme nom de fichier. Quelque chose comme gh9jzdp3 + uexezz3 + ng7lw == . Est-ce que cela est susceptible de causer des problèmes n'importe où?

Edit: Je garderai probablement cela à un max de 24 caractères

Edit: On dirait que j'ai un personnage qui causera des problèmes. Ma fonction qui a généré ma chaîne consiste à fournir des piqûres telles que: J2DB3 / PULEJEDNIB + WZROW == Vous remarquerez que cela comporte un / qui va causer des problèmes.

Selon Ce site Le / est une base valide64 Caractère de sorte que je ne pourrai pas utiliser une chaîne codée de base64 pour un nom de fichier.


0 commentaires

3 Réponses :


-1
votes

dans Windows, vous devriez aller aussi longtemps si vous êtes conforme aux conventions de nommage de Windows: https://docs.microsoft. COM / EN-US / WINDOWS / WIN32 / FILEIO / NOMING-A-File # Nommage-Conventions .

Aussi loin que je sache, toute chaîne codée de base64 ne contient aucune des personnages de réserves.

La chose qui va probablement être un problème est le lengte du nom de fichier.


1 commentaires

C'est faux, car une chaîne de base64 peut contenir des barres obliques, qui est un caractère réservé à la fois sous Windows et autres systèmes d'exploitation. Pour utiliser BASE64 en tant que noms de fichiers, vous devez utiliser le base64url standard.



0
votes

L'officiel RFC 4648 états:

Un alphabet alternatif a été suggéré qui utiliserait "~" comme le 63ème caractère. Étant donné que le caractère "~" a une signification particulière dans certains environnements de système de fichiers, le codage décrit dans cette section est recommandé à la place. Le caractère URI non réservé restant est ".", Mais certains environnements de système de fichiers ne permettent pas de multiples "". dans un nom de fichier, faisant ainsi le "." caractère peu attrayant aussi bien.

J'ai aussi trouvé sur le serveurfault stackexchange j'ai trouvé Ceci :

Il n'y a pas de système de fichiers "UNIX". Ni un système de fichiers «Windows» ne vient pas à cela. Voulez-vous dire NTFS, FAT16, FAT32, EXT2, EXT3, EXT4, etc., ont chacune leurs propres limitations sur des caractères valides dans les noms.

Aussi, votre titre et votre question se rapportent à deux concepts totalement différents? Voulez-vous savoir sur le sous-ensemble de caractères légaux ou voulez-vous savoir quels caractères génériques peuvent être utilisés dans les deux systèmes?

http://fr.wikipedia.org/wiki/ext3 indique "Tous les octets sauf null et" / "" sont autorisés dans les noms de fichiers.

http://msdn.microsoft.com/en-us/library/aa365247 (vs.85) .aspx décrit le cas générique pour les noms de fichiers valides "quel que soit le système de fichiers". En particulier, les caractères suivants sont réservés <>: "/ \ | *

Windows place également des restrictions à l'utilisation de noms de périphérique pour les fichiers: Con, PRN, AUX, NUL, COM1, COM2, COM3, etc.

La plupart des commandes dans les systèmes d'exploitation basés sur Windows et UNIX acceptent * comme générique de caractères génériques. Windows accepte% en tant que caractères génériques de caractères, tandis que les obus pour les systèmes UNIX utilisent? comme un seul caractère générique.

et Cet autre :

base64 ne contient que A-Z, A-Z, 0-9, +, / et =. Donc, la liste des caractères à ne pas utiliser est la suivante: tous les caractères possibles moins ceux mentionnés ci-dessus.

à des fins particulières. et _ sont aussi possibles.

ce qui signifie que, au lieu du caractère standard / base64, vous devez utiliser _ ou . ; à la fois sur Unix et Windows.

De nombreuses langues de programmation vous permettent de remplacer tous les / avec _ ou . , car il n'est qu'un seul caractère et peut être accompli avec un boucle simple.


0 commentaires

1
votes

Non. Vous ne pouvez pas utiliser de chaîne codée de base64 pour un nom de fichier. En effet, le caractère / est valide pour base64 cordes qui causeront des problèmes avec des systèmes de fichiers.

https://base64.guru/learn/base64-Caractérents

Alternatives:

Vous pouvez utiliser base64 , puis remplacer les caractères non désirés, mais une meilleure option serait d'encoder votre chaîne d'origine à l'aide d'une fonction bin2hex () . / fort>


0 commentaires