Можно ли использовать javascript для сохранения файла в определенный каталог?

#javascript

#javascript

Вопрос:

Используется Filesaver.js плагины для загрузки текстового файла. По умолчанию файл загружается в мою папку загрузки. Необходимо сохранить загруженный файл в определенной папке.

Комментарии:

1. Это невозможно в javascript. Но вы можете изменить каталог загрузки в вашем браузере.

2. Этот параметр контролируется пользователем браузера. Вы не имеете права сохранять материал на устройстве пользователя, где вам заблагорассудится. Устройство принадлежит пользователю, и он может выбирать, где сохранять загрузки. На самом деле, JavaScript даже не знает, какова структура файловой системы (и не должен знать, это было бы большой дырой в безопасности)

3. @yash vadhvani что вы имеете в виду? Насколько я знаю, JavaScript не может выбрать, в какую папку сохранить файл … если вы не можете привести пример??

4. @ADyson Мне действительно жаль, что я хочу добавить в свой ответ через браузер, например, перед загрузкой вы можете указать место загрузки

5. @ADyson Да, это совершенно верно, сэр.

Ответ №1:

Это невозможно … к счастью! Представьте, что произойдет, если JS, который запускается в вашем браузере, сможет изменить вашу файловую систему. Дыра в безопасности была бы настолько большой, что все бы (и определенно должны) прекратили пользоваться Интернетом. Представьте ситуацию, когда я создал веб-сайт, который onload запускает код, сохраняющий файл в вашей файловой системе. Файл попадает в ваш cron.daily каталог (предположим, вы используете Linux). Что делает файл? — вы можете спросить (если бы вы знали, что он вообще был сохранен:smiling_imp:). Ничего особенного — просто ищу некоторые личные данные и по завершении удаляю случайные файлы из /usr/bin , /proc , /sys и, возможно /etc , просто чтобы посмотреть, что получится.

Теперь вы видите проблему? Код, который запускается в вашем браузере до того, как вы сможете отреагировать на это, не может обладать такой мощью, чтобы сохранять что-либо в вашей файловой системе. Единственное, что вы можете сделать, чтобы предоставить пользователю файл, — это использовать модуль типа Filesaver.js который, по сути, вообще не имеет доступа к файловой системе пользователя. Он просто отправляет запрос GET непосредственно к файлу, и именно браузер загружает файл (потому что именно так работает браузер). Итак, единственный способ изменить местоположение загруженного файла — это изменить настройки браузера. Другого способа я не знаю.

Ответ №2:

Ответ отрицательный, изменение каталога невозможно по соображениям безопасности в File API.

https://github.com/eligrey/FileSaver.js/issues/42