grails - как заставить скачать файл с его расширением - PullRequest
3 голосов
/ 16 сентября 2010

У меня есть следующий код

    def fileDoc = new File(document.documentLocation);
    if(fileDoc.exists()){
        // force download
        def fileName = fileDoc.getName();
        response.setContentType("application/octet-stream")
        response.setHeader "Content-disposition", "attachment; filename=${fileName}" ;
        response.outputStream << fileDoc.newInputStream();
        response.outputStream.flush();
        return true;
   } 

documentLocation содержит строку типа "c: \ mydoc \ contains_some_long_string_with_id.pdf", например.

Я бы хотел, чтобы пользователь вместо этого скачал файлпросмотреть его из браузера.Он хорошо работает на Chrome, где я мог бы загрузить, и файл будет отображаться "сохранить как" "содержит_some_long_string_with_id.pdf"

, но в Firefox (последний) ... имя файла ограничено только "содержит_сом_long" (без расширения pdf в конце).

Как решить эту проблему?файл может быть в формате csv, pdf, text, html, zip, pdf или в другом формате.

спасибо

Ответы [ 2 ]

1 голос
/ 17 сентября 2010

Возможно, у вас есть пробелы или специальные символы, которые сбивают с толку Firefox. Имя файла должно быть строкой в ​​кавычках:

response.setHeader "Content-disposition", "attachment; filename=\"${fileName}\"";

См. RFC 2616, раздел 19.5.1 .

1 голос
/ 16 сентября 2010

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

например. для PDF это должно быть "application / pdf"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...