14.02.2017, 20:21
|
Профессор
|
|
Регистрация: 17.11.2014
Сообщений: 403
|
|
Скрипт для скачивания файлов в папку
Добрый день. Подскажите, возможно ли с помощью javascript предопределить папку для скачивания файлов. Например, кликая по ссылке на сайте для скачивания медиафайла, файл скачивался пользователю в конкретную папку. Спасибо.
|
|
14.02.2017, 22:48
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Нет, но браузер запоминает папку в которую последний раз производилось скачивание, а также не проблема ее явно прописать в настройках браузера.
|
|
14.02.2017, 23:29
|
|
Профессор
|
|
Регистрация: 16.09.2009
Сообщений: 253
|
|
Кстaти, не раз сталкивался с подобной ситуацией.
Как, например, переменные MS-среды:
Microsoft Windows [Version 6.3.9600]
(c) Корпорация Майкрософт (Microsoft Corporation), 2013. Все права защищены.
C:\>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Paguo-86PK\AppData\Roaming
CARBON_MEM_DISABLE=1
CLASSPATH=.;C:\Program Files (x86)\Java\jre7\lib\ext\QTJava.zip
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=Paguo-86PK
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\Paguo-86PK
LOCALAPPDATA=C:\Users\Paguo-86PK\AppData\Local
LOGONSERVER=\\Paguo-86PK
NUMBER_OF_PROCESSORS=64
OS=Windows_NT
Path=C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Mercurial
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=AMD64 Family 21 Model 19 Stepping 1, AuthenticAMD
PROCESSOR_LEVEL=21
PROCESSOR_REVISION=1301
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
QTJAVA=C:\Program Files (x86)\Java\jre7\lib\ext\QTJava.zip
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\Paguo-~1\AppData\Local\Temp
TMP=C:\Users\Paguo-~1\AppData\Local\Temp
USERDOMAIN=Paguo-86PK
USERDOMAIN_ROAMINGPROFILE=Paguo-86PK
USERNAME=Paguo-86PK
USERPROFILE=C:\Users\Paguo-86PK
VS90COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
windir=C:\Windows
P.S.: Рано или поздно, где-то это должны реализовать…
Ведь локальное хранилище раньше тоже ограничивалось несколькими килобайтами cookies
|
|
15.02.2017, 06:28
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Paguo-86PK,
а причем тут переменные среды?
|
|
15.02.2017, 14:45
|
|
Профессор
|
|
Регистрация: 16.09.2009
Сообщений: 253
|
|
Сообщение от laimas
|
Paguo-86PK,
а причем тут переменные среды?
|
Имелoсь ввиду мною та тренденция, что современный вэб-браузер давно по степени своей сложности и функциональности вырос практически в собственную операционную вэб-среду. Тем самым, давно в настройках браузеров пора добавить опции по выстановлению директорий под разные нужды активных скриптов на странице.
Например, мне очень не нравится то, что кнопка выбора файлов открывает окно обзора моей файловой системы. А файловые API скриптов имеют возможность доступа к ним.
Давно я обсуждал где-то идею такого API, где при обзоре файлов просто создаётся ярлык на него в папке сессии конкретной страницы. А в самом скрипте генерируется событие "изменение состава разделяемых медиа ресурсов" с кодом "добавлен файл" или "удалён".
А переменная, наряду с локальным storage-хранилищем, имеет соответствующую структуру (директории, файлы и т.д.).
P.S.: И скрипт может "дежурить" сутками…
Например, кликнул в папке по фото и выбрал "Отправить ...->Сессия Хроме (скрипт такой-то)", в нужную папку отправляется ярлык. Хром генерирует событие onfileshare в скрипте и тот что-то делает.
Или я опоздал?
|
|
15.02.2017, 15:06
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Paguo-86PK,
а что мешает зайти в настройки браузера указать папку для сохранения или поведение браузера при открытии удаленного документа?
Нравится вам диалог сохранения файла или нет, W3C и производителям браузера на это ровным счетом наплевать. Они руководствуются не вашими вкусами, а вопросами безопасности.
Если позволить сохранять файлы втихую, а клиентскому скрипту изменять настройки браузера, шастатать по переменным окружения и изменять их, то на системах всех пользователей будет создан портал легального проникновения на них удаленного пользователя. Так что молите бога, что хоть кто-то об этом думает.
|
|
15.02.2017, 15:25
|
|
Профессор
|
|
Регистрация: 16.09.2009
Сообщений: 253
|
|
Сообщение от laimas
|
Paguo-86PK,
а что мешает зайти в настройки браузера указать папку для сохранения или поведение браузера при открытии удаленного документа?
Нравится вам диалог сохранения файла или нет, W3C и производителям браузера на это ровным счетом наплевать. Они руководствуются не вашими вкусами, а вопросами безопасности.
Если позволить сохранять файлы втихую, а клиентскому скрипту изменять настройки браузера, шастатать по переменным окружения и изменять их, то на системах всех пользователей будет создан портал легального проникновения на них удаленного пользователя. Так что молите бога, что хоть кто-то об этом думает.
|
Тaки безопасность и имеется мною ввиду.
В браузере указывается папка под сессии. В корне этой папке - файл конфигурации.
А когда очередной скрипт открывает файловую сессию, в ней создаётся папка этой сессии и в ней копятся ярлыки (читаемых) файлов и создаваемые скриптом файлы (с квотами на размер и тип).
P.S.: Или я свою позиция освещаю не так, или…
|
|
15.02.2017, 15:29
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Paguo-86PK
|
В браузере указывается папка под сессии. В корне этой папке - файл конфигурации.
|
Это не ваша забота как пользователя браузера, он и без вас с этим вполне справляется.
|
|
15.02.2017, 15:53
|
|
Профессор
|
|
Регистрация: 16.09.2009
Сообщений: 253
|
|
Этo я понял. Главное, что API вообще не имело функций управления реальной файловой системы:
var SSM_CallBack =
function(
event, // код события
files // объект файловой системы
) {
switch(event) {
case files.EVENT.DELETE:
while(files.EVENT.nodes.length) {
var file = files.EVENT.nodes.shift();
alert([
"Удаляется файл " + file.name,
"Время удаления " + file.Date.toString(),
"Размер файла " + file.size,
"Источник события " + files.EVENT.source.id
].join("\r\n"));
}
break;
case files.EVENT.CREATE:
while(files.EVENT.nodes.length) {
var file = files.EVENT.nodes.shift();
alert([
"Распространяется файл " + file.name,
"Время представления " + file.Date.toString(),
"Размер файла " + file.size,
"Источник события " + files.EVENT.source.id
].join("\r\n"));
}
break;
}
}
|
|
15.02.2017, 16:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Paguo-86PK,
если вы печетесь об умении браузера предоставлять пользователю работу с файловой системой, то в рамках HTML5 такое уже есть, но в рамках разумного, то есть отведено браузером место, там и хранение.
Вопрос же автора темы был иной, и того чего он хочет позволять нельзя, почему и так понятно.
|
|
|
|