Titre d'un script CGI Perl - Perl - Programmation
Marsh Posté le 25-02-2009 à 20:42:08
Pour faire ça, en général j'envoie l'entête http suivant :
Content-Disposition: inline; filename="%s"; size=%d |
Où tu remplaceras %d par la taille en octet du fichier et %s le nom du fichier.
Mais ça coince en général avec les caractères unicode > 127. Si tu as ce genre de caractères, va falloir sans doute passer par des RewriteRule.
Marsh Posté le 25-02-2009 à 20:44:00
dans l'en-tête, il faut ajouter ca :
Code :
|
Marsh Posté le 26-02-2009 à 09:33:01
Merci des réponses. J'ai jonglé avec vos deux solutions pour voir, mais toujours rien. Dernière version en date :
Code :
|
J'ai essayé le inline et le attachement, avec des guillemets autour du nom et sans.
Pour info, les noms de fichier sont en UNICODE.
Marsh Posté le 26-02-2009 à 17:54:58
Bon, j'ai un peu tout essayé, cherché des choses sur le net, mais rien trouvé de fonctionnel. J'ai constaté qu'on ne pouvait pas appeler plusieurs fois "print cgi->header" sous peine d'avoir des problèmes. J'ai donc essayé de tout mettre en une fois, mais toujours sans résultat :
Code :
|
Marsh Posté le 26-03-2009 à 17:45:38
Je remonte le sujet, en espérant que quelqu'un connaisse la solution
Marsh Posté le 27-03-2009 à 10:08:51
J'avais du essayé, mais depuis le temps, j'ai réessayé au cas où, mais le résultat est toujours négatif. Le fichier qu'il tente de télécharger est toujours "monscript.pl"
Code :
|
Le nom de fichier est bien correct, mais toujours rien
Marsh Posté le 27-03-2009 à 14:20:23
Bah, chais pas ce que tu fais, mais avec un programme de ce type, ça_marche_chez_moi™ (IE, FF, Safari). Bref, va falloir débugguer les headers qui ta lib envoie, il y a des chances pour qu'ils soient pas bon.
Code : |
Marsh Posté le 27-03-2009 à 15:45:21
OK, j'ai pas mal galéré, mais ton code m'a permis de trouver la solution.
J'ai juste déplacé du code, enlevé l'usage de "cgi->header", et ça fonctionne.
À vrai dire, je ne comprends pas pourquoi ça ne marchait pas avant, et ça, j'aime pas.
En tout cas, il semblerait que ça génère une erreur quand on ne met pas la taille, ou quand la taille indiquée diffère de la taille réelle.
Merci pour votre aide.
Marsh Posté le 01-04-2009 à 16:50:36
Déjà tu avais une erreur dans cette ligne :
Code :
|
Sur la doc de CGI au cpan, on peut lire qu'il faut qu'au moins le premier argument commence par un tiret, de plus il s'agit d'un HASH passé en paramètre.
De plus il faut enlever le "Content" pour la clé donc elles s'appelleront respectivement -type et -disposition :
Donc la bonne écriture était :
Code :
|
Mais bon je dois avouer que j'ai aussi pris la solution du print "Content-Type" etc car la solution ci dessus ne fonctionne tout de même pas
J'ai du me tromper quelque part en plus...
Marsh Posté le 01-04-2009 à 17:04:14
Merci pour les précisions
J'avoue que j'ai eu pas mal de soucis avec la méthode $cgi->header...
Marsh Posté le 25-02-2009 à 18:12:51
Bonsoir,
J'ai écris un petit script Perl qui permet de télécharger un fichier existant sur le serveur.
Tout fonctionne bien si ce n'est que le fichier télécharger a systématiquement le nom du fichier perl (filedl.pl)
Quelqu'un sait comment faire en sorte que le nom de fichier proposé à l'enregistrement soit bien celui du fichier original, et non celui du script perl ?
J'ai essayé d'ajouter la balise head avec title, mais comme on peut s'en douter, le type mime passe alors automatiquement en texte, et le contenu du fichier binaire est affiché dans le navigateur, au lieu d'être proposé à l'enregistrement.
Voici un extrait du code du script :