переписать URL, чтобы повлиять на «сохранить как» имя файла - PullRequest
0 голосов
/ 25 августа 2010

Мое приложение находится в JSP / Struts и работает в WebSphere. У меня нет доступа к серверу / действительно / поэтому я пытаюсь сделать все это из самого приложения (действия Struts и настройки, JSP и т. Д.).

У меня есть страница, на которой отображаются ссылки на документы PDF, на которые пользователь может захотеть посмотреть. Когда они нажимают на ссылку, она перенаправляется в действие STRUTS «Просмотр документа», которое выполняет работу по извлечению PDF из серверной системы, а затем отображает PDF в окне браузера. Это все отлично работает.

Пользователи попросили настроить имя файла документа для каждого документа, когда они переходят в Файл-> Сохранить как ... но сейчас браузер хочет попытаться присвоить документу имя после имени моих Struts действие. Пример: "documentView.pdf"

У меня есть имя файла, которое я хочу использовать, перенаправленное в действие STRUTS, и я попытался использовать заголовок «Content-Disposition», чтобы установить это, но не смог заставить его работать. На самом деле это прекрасно работает, если я использую "attachment; filename =" myfilename "", но тогда он сразу же ЗАВЕРШАЕТ диалоговое окно "Сохранить как ...", чего я тоже не хочу.

Я хочу иметь возможность просматривать встроенный PDF-файл в окне браузера и сохранять его с пользовательским именем файла, если я так решу.

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

Любые идеи будут высоко оценены.

1 Ответ

3 голосов
/ 26 августа 2010

Измените часть вложения Content-Disposition на «inline».

Браузерная поддержка Content-Disposition ненадежна.

До того, как это было поддержано, вы могли заставить браузер делать правильные вещи, помещая лишний ключ / значение в конце URL. Как:

http://example.com/getPDF?id=123213&filename=mydoc.pdf

Некоторые браузеры выбрали последний бит URL в качестве имени файла. Не уверен, что это все еще работает.

...