Можно ли перехватить файл из <input type=file> в javascript?
-
03-07-2019 - |
Вопрос
Можно ли прочитать содержимое файла, выбранного с помощью элемента управления вводом файла?Я хочу сделать что-то вроде:
<input type="file" id="fileInput" onblur="readFile(this)"/>
<script language="javascript">
function readFile(file) {
document.write(file);
}
</script>
Возможно ли что-нибудь подобное?или загрузка файла просто отправляет файл на сервер.
Решение
Это возможно в Fire Fox, но он не стандартизирован, поэтому его невозможно перенести в браузеры (например, WebKit его не поддерживает).Лучше всего, вероятно, загрузить файл на сервер, а затем загрузить его снова, используя XMLHTTPRequest
.
Другие советы
Вы можете это сделать, если используете HTA (приложение гипертекстового терминала, см. http://msdn.microsoft.com/en-us/library/ms536496(VS.85).aspx).В этом случае вы будете привязаны к Internet Explorer, но сможете иметь доступ к файлам, реестру и т. д.Есть (конечно) проблемы с безопасностью.
Вероятно, это невозможно во многих браузерах.Что произойдет, если мы предоставим арбитражному javascript возможность читать произвольный файл в файловой системе, используя учетные данные пользователя?ПЛОХИЕ ВЕЩИ.Вредоносный JavaScript может легко забрать данные файла и отправить их обратно на сервер, незаметно отслеживая все ваши файлы в фоновом режиме.
Я сомневаюсь, что это возможно, и настоятельно не рекомендую этого делать.
Если оно должно быть исключительно клиентским, зачем вы вообще используете веб-приложение?Единственные файлы, которые он может отображать, — это обычный текст, для которого существует множество более простых способов просмотра содержимого.