CGI скачать изображение после генерации

1

У меня есть небольшой python cgi script, который принимает загрузку изображения от пользователя, преобразует его в другой формат и сохраняет новый файл в временном расположении. Я бы хотел, чтобы он автоматически запросил пользователя загрузить преобразованный файл. Я пробовал:

# 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

Я также пробовал:

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

Мой браузер либо загружает script.cgi, либо script.cgi.ps. Любая помощь приветствуется.

  • 0
    Когда ваш браузер загружает неправильное имя файла, какие данные находятся в файле? Это данные, которые вы ожидаете?
  • 0
    да, когда он загружает script.cgi, файл выглядит как файл postscript. Когда он загружается как script.cgi.ps, я получаю правильное изображение, но его загрузка с «неправильным» именем файла просто беспокоит меня ...
Теги:
cgi

2 ответа

1
Лучший ответ

Я не уверен, но вы пытались отделить фактические данные от заголовков с помощью новой строки? EDIT: запись print "\n" выводит две строки новой строки, поэтому я думаю, что это должно быть написано так:

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

Предполагая, что new_filename имеет некоторое разумное значение, я не вижу, что здесь не так.

  • 0
    Нет, все еще пытается dl script.cgi ...: - /
  • 0
    и new_filename является правильным значением: - /
Показать ещё 2 комментария
0

Оказывается, вы можете использовать заголовок Location для этого, но он работал только для меня с абсолютной ссылкой. Таким образом,

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

Я знаю, спецификация cgi говорит, что относительные ссылки должны работать для внутренних переадресаций, но это то, что сработало для меня...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню