Файловый API, программная загрузка файла с сервера и сохранение его в изолированной файловой системе

Есть ли способ программно загрузить файл с сервера (пользователь нажимает кнопку «Сохранить» в веб-приложении), а браузер (поддерживающий File API) или устройство загружает файл и сохраняет его в своей изолированной файловой системе? Я смотрю на файловый API HTML5. Я могу создать или изменить файл и сохранить его, но сначала мне нужно получить файл с сервера. Проще говоря, я хочу избежать сохранения в виде всплывающего окна и хочу, чтобы файл оставался в изолированной файловой системе веб-приложения. Любые предложения, где я могу посмотреть, приветствуются.


person Mamadum    schedule 07.12.2012    source источник


Ответы (2)


Вам нужен XMLHttpRequest(), который, несмотря на свое название, может обрабатывать загрузку всех типов данных, включая двоичные. Если вы установите для responseType значение «arraybuffer», вы можете преобразовать его в большой двоичный объект и довольно легко сохранить его в файловой системе.

У HTML5Rocks есть отличный учебник, который должен охватывать все, что вам нужно: Новые приемы в XMLHttpRequest

(Я знаю, что этот вопрос немного устарел, но я просто искал, как сделать то же самое, и это был первый результат, который появился, поэтому я решил поделиться)

person VisibleMan    schedule 24.12.2012

Самый простой способ загрузить файл — просто window.open указать его URL-адрес. Это предложит пользователю выбрать место для сохранения файла.

Кроме этого, вы ничего не можете сделать; браузеры очень тщательно защищают файловые системы своих пользователей.

person machineghost    schedule 08.12.2012
comment
Да, я знаю, это одна из причин использования File API и изолированной файловой системы. Файл не хранится в файловой системе пользователя. - person Mamadum; 08.12.2012
comment
Я не совсем понимаю, что вы подразумеваете под изолированной файловой системой; такой вещи не существует в браузере/веб-мире. Если вы хотите что-то подобное, вам нужен более высокий уровень контроля, чем позволяют браузеры, а это значит, что вам нужен Flash, апплет Java, плагин для браузера или что-то в этом роде. - person machineghost; 08.12.2012
comment
Я знаю, что это только черновик, и я думаю, что на данном этапе он поддерживает только хром. - person Mamadum; 08.12.2012
comment
Ах; другие браузеры поддерживают его, но да, он еще не полностью поддерживается (caniuse.com/#search=file% 20API). В этом случае лучшее, что я могу предложить, это: developer.mozilla.org/en-US /документы/ - person machineghost; 08.12.2012