2010-07-09 6 views
1

J'ai un petit script cgi python qui accepte un téléchargement d'image de l'utilisateur, convertit dans un format différent, et enregistre le nouveau fichier dans un emplacement temporaire. Je voudrais qu'il invite automatiquement l'utilisateur à télécharger le fichier converti. J'ai essayé:CGI télécharger l'image après la génération

# image conversion stuff.... 
print "Content-Type: image/eps\n" #have also tried application/postscript, and application/eps 
print "Content-Disposition: attachment; filename=%s\n" % new_filename #have tried with and without this... 
print open(converted_file_fullpath).read() 
print 

J'ai aussi essayé:

print "Location: /path/to/tmp/location/%s" % new_filename 
print 

Mon navigateur soit téléchargements script.cgi ou script.cgi.ps. Toute aide est appréciée.

+0

Lorsque vos téléchargements de votre navigateur pour le mauvais nom de fichier, les données est dans le fichier? Est-ce les données que vous attendez? –

+0

oui, quand il télécharge script.cgi, le fichier ressemble à un fichier postscript. Quand il télécharge comme script.cgi.ps, j'obtiens l'image correcte, mais le télécharger avec le "mauvais" nom de fichier me dérange juste ... –

Répondre

1

Je ne suis pas sûr, mais avez-vous essayé de séparer les données réelles des en-têtes par newline? EDIT: écriture print "\n" sorties deux sauts de ligne, donc je pense qu'il devrait être écrit comme ça:

print "Content-Type: image/eps" 
print "Content-Disposition: attachment; filename=%s" % new_filename 
print 
print open(converted_file_fullpath).read() 

En supposant que new_filename a une valeur raisonnable, je ne vois pas ce qui ne va pas ici.

+0

non, essaye toujours de dl 'script.cgi' ...: -/ –

+0

et 'new_filename' est la valeur correcte: -/ –

+0

Même si '\ n' est supprimé des impressions? Existe-t-il une sortie (instructions d'impression) avant l'impression? Content-Type: image/eps "'? – cji

0

Il s'avère que vous pouvez utiliser l'en-tête Location pour cela, mais cela n'a fonctionné que pour moi avec un lien absolu. Ainsi,

print 'Location: http://example.com/path/to/tmp/location/%s' % new_filename 
print 

Je sais, la spécification cgi dit que les liens relatifs devraient travailler pour les redirections internes, mais c'est ce qui a fonctionné pour moi ...

Questions connexes