открытие локального файла на веб-странице с помощью файла: // - PullRequest
2 голосов
/ 24 мая 2009

У меня есть форма, где пользователь заполняет (страница JSP). Один из входных данных имеет тип «файл». Есть кнопка предварительного просмотра, которая откроет новое окно и использует javascript для верстки заполненной формы для отображения. Ввод «file» будет отображаться как гиперссылка, и когда пользователь щелкает гиперссылку, он должен открыть вложение. Так что, если вы приложите pdf, я ожидаю, что когда я нажму на гиперссылку, откроется foxit reader если это текстовый файл, откроется блокнот.

Я пытался использовать file://, но, похоже, ничего не произошло. Похоже, это функция безопасности в MSIE, где протокол file:// заблокирован.

Как вы реализуете эту функцию без (ActiveX, ajax)?

1 Ответ

3 голосов
/ 24 мая 2009

file:// указывает только на локальную файловую систему на компьютере пользователя и часто подвергается более жестким мерам безопасности. На него просто нельзя положиться, браузер даже разрешит file:// доступ к протоколу.

Единственный способ безопасно сделать то, что вы хотите, - это полностью отправить форму с файлом и использовать язык на стороне сервера (PHP, ASP.NET, Rails, Django, выберите), чтобы отобразить страницу с ' симпатичный макет данных формы, а также предварительный просмотр документа. Вот как это делают форумы: вы нажимаете кнопку «Предварительный просмотр», и ваше сообщение отправляется на сервер, сервер представляет его для вашего одобрения, вы одобряете его, и оно сохраняется в базе данных и публикуется. Если вы не одобрите его, он будет удален и никогда не попадет в базу данных.

Если вы не хотите, чтобы пользователь покинул страницу, вы можете свернуть это в своей проверке и выполнить обратную передачу AJAX. Существуют библиотеки javascript, специально предназначенные для сериализации и бесшумной передачи форм, а затем для возврата результатов. JQuery Forms является хорошим примером этого (примечание: требуется JQuery ).

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