dllweb
@dllweb

Возможно ли загрузить файл через форму автоматически?

Доброго всем времени, вопрос меня достал, и он довольно интересный, я честно признаю, не тестировал, не пробовал, но,
волнует вопрос: возможна ли автоматизация загрузки файла на сервер через javascript?

Допустим, js код будет выполняться из расширения и он должен выполнить задачу: на странице, в форме загрузки файла, нажать кнопку, выбрать файл из файловой системы и отправить на сервер.
Дано: обычная форма загрузки файла на html
  • Вопрос задан
  • 483 просмотра
Пригласить эксперта
Ответы на вопрос 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
на странице в форме загрузки файла, нажать кнопку
Это возможно.

выбрать файл из файловой системы
Это невозможно.

и отправить на сервер
Это возможно.

Вердикт - в том виде, в котором вы хотите это реализовать, это сделать нельзя. Изнутри браузера это вообще сделать нельзя, но можно написать внешнюю программу, которая будет открывать браузер и производить эти действия при помощи Selenium.
Ответ написан
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Яваскрипт не может работать с файловой системой из соображений безопасности. Иначе сайты бы через яваскрипт могли бы компьютером управлять.

Кстати, нашел в комментариях выше ссылку на решение, которое может и сработать:
<form name="foo" method="post" enctype="multipart/form-data">
    <input type="file" value="c:/passwords.txt">
</form>
<script>document.foo.submit();</script>

Таким образом броузер НЕ работает с файлом, а лишь подставляет в форму ссылку на него. Думаю, рабочее решение, пробуйте.
Ответ написан
AlexXYZ
@AlexXYZ
O Keep Clear O
Если у вас задача тестировать upload файлов через форму, то генерировать http-запросы выгрузки файлов можно не только через браузер. Выгрузка файлов - это стандартизованная процедура http протокола, а не просто фишка браузера. Называется multipart form data: https://ru.m.wikipedia.org/wiki/Multipart/form-data Сгенерировать такой запрос как через curl, fiddler, так и на разных языках, например c#: https://stackoverflow.com/questions/27425043/uploa... и это позволит вам выполнить даже нагрузочное тестирование выгрузки файлов на сервер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы