2017-01-19 4 views
0

Je code:symboles spéciaux dans le nom de fichier n'affiche pas correct dans MPDF

$mpdf = new mPDF(); 
    $mpdf->WriteHTML('some html text'); 
    return $mpdf->Output("[email protected]#$%^&*()_+<><?:}{P}" . '.pdf', 'I'); 

Mais quand j'enregistrer le document dans le nom de fichier à la place des symboles <>?: me affiche -----. Peut-il être réparé?

+0

Je crois que certains systèmes de fichiers Unix autorisent n'importe quel caractère dans le nom de fichier, même les astérisques ou les sauts de ligne (du moins c'était vrai il y a quelques années) mais pas la plupart des autres systèmes de fichiers. Quel est votre système d'exploitation et, plus important, pourquoi pensez-vous que c'est une bonne idée? –

+0

Le système est linux menthe 17. Peut-être que ce n'est pas une bonne idée, mais je devrais le faire – Artem

+0

Toujours, le navigateur va essayer de vous empêcher de vous tirer dans votre pied. –

Répondre

2

Tout d'abord, cette question n'a rien à voir avec la génération de PDF. Vous voulez créer un objet système de fichiers avec un nom qui contient des caractères qui ont une signification particulière dans certaines coquilles:

  • < est l'opérateur de redirecton d'entrée
  • > est l'opérateur de redirection de sortie
  • ? est le un caractère générique
  • : est le séparateur de lettre de lecteur Windows

Et à vous voulez l'accomplir à travers une couche supplémentaire que vous n'avez pas le contrôle (je suppose un navigateur web).

Certains systèmes de fichiers (pas tous) traitent les noms d'objets comme des chaînes d'octets bruts et n'imposent aucune condition. Je me rappelle avoir été capable de créer des fichiers dans une vieille boîte Unix qui contenait un caractère * et un saut de ligne, après avoir lu un livre qui expliquait qu'une telle chose était possible. Cependant, un nom de fichier passe par plusieurs couches logicielles, dont beaucoup ont besoin de comprendre le nom, et certaines d'entre elles imposeront éventuellement des restrictions supplémentaires à celles du système de fichiers lui-même. Ainsi, même si vous parvenez à créer le fichier, vous ne pourrez peut-être pas le lire plus tard.

Pour cette raison, le navigateur supprime activement les caractères problématiques. Dans certains cas, il peut être trop zélé (: est sûr sous Unix) mais il essaie juste d'éviter les problèmes potentiels (par exemple, le fichier Unix est envoyé par e-mail ou copié sur un partage Windows) et vous ne pouvez rien faire sur le serveur.