Управление загрузкой файла xpages - открыть вместо сохранения?
Когда вы нажимаете на ссылку для вложения в элементе управления загрузкой файлов в XPiNC, вам предлагается сохранить вложение. Можно ли настроить элемент управления загрузкой файлов для непосредственного открытия вложения, а не предлагать пользователю сохранить его? Мы используем 8.5.2 FP3.
2 ответа
Обработка "вложения" в основном выполняется браузером (XPiNC является браузером Firefox внутри Notes). Например, если в браузере установлен плагин PDF и серверы отправляют соответствующий mime-тип "application/ pdf" вместе с файлом, браузер использует этот плагин для отображения файла. Корреляция между MIME-типом и плагином или внешним приложением в браузере - это то, на что сервер / веб-приложение не могут влиять.
На стороне сервера вы можете отправлять mime-тип "application/ octet-stream" вместо того, который соответствует типу файла, в результате чего браузер отображает диалоговое окно "Выбор приложения или загрузка". Таким образом, в 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 он пытается заблокировать всплывающее окно, а затем должен нажать "Открыть". Надеюсь это поможет.