Когда вы щелкаете ссылку на вложение в элементе управления загрузкой файлов в XPiNC, вам предлагается сохранить вложение. Можно ли настроить элемент управления загрузкой файлов, чтобы открывать вложение напрямую, а не предлагать пользователю сохранить его? Мы используем 8.5.2 FP3.
Управление загрузкой файлов xpages - открыть вместо сохранения?
Ответы (2)
Обработка «вложения» в основном выполняется браузером (XPiNC является браузером Firefox внутри Notes). Если, например, в браузере установлен подключаемый модуль PDF, и серверы отправляют соответствующий MIME-тип «application/pdf» с файлом, браузер использует этот подключаемый модуль для отображения файла. Корреляция между MIME-типом и плагином или внешним приложением в браузере — это то, на что сервер/веб-приложение не может повлиять.
Что вы можете сделать на стороне сервера, так это отправить «application/octet-stream» типа mime вместо того, который соответствует типу файла, в результате чего браузер отобразит диалоговое окно «Выберите приложение или загрузку». Таким образом, в Xpages вам придется перенаправить загрузку через XPage, где вы установите соответствующие заголовки HTTP, как показано в Установить заголовки кеша на XPage и Как заставить файлы PDF открываться в браузере?
Я не использовал элемент управления загрузкой файлов или XPINC, но определенно возможно сделать так, чтобы ваш элемент управления xpage или view открывал вложение напрямую. Этот метод обходит контроль загрузки.
См. этот пост Стефана Висселя: http://www.wissel.net/blog/d6plinks/SHWL-86QKNM, что дает вам некоторые SSJS, которые вы можете использовать для создания URL-адреса. Вы можете использовать его в методе onClick кнопки. По сути, вы дублируете функциональность элемента управления загрузкой таким образом, чтобы он делал то, что вы хотите.
Если вы хотите сделать то же самое из элемента управления представлением, см. этот пост: http://notesspeak.blogspot.com/2013/02/how-to-launch-attachment-from-view.html
Обратите внимание, что разные браузеры ведут себя немного по-разному, но это работает во всех основных.
Михаил, Вот код, который я использовал:
var unid = rowValue.getUniversalID()
var url = getAttachmentURL(unid, "storetransfer.pdf", "Testing//test.nsf")
url = "/" + url + ";"
view.postScript("window.open('" + url + "', '_blank', 'height=120,width=650,top=10,left=10,resizable=yes');");
Я немного изменил код Стефана, так как мои данные находятся в другом NSF, чем мой код. Вы, наверное, знаете это, но view.postScript позволяет вам вызывать javascript на стороне клиента из SSJS. Это всегда последнее, что нужно запустить, отсюда и название. Это тот же код из видео Notesin9, упомянутого в комментариях. Я только что проверил это, и это работает так, как я думаю, вы хотите, но в firefox он пытается заблокировать всплывающее окно, а затем должен нажать «открыть». Надеюсь это поможет.