как скачать контент на стороне клиента - PullRequest
3 голосов
/ 12 апреля 2010

Я хочу позволить пользователю загружать текущее содержимое текстовой области в текстовый файл на своем компьютере. В прошлом я создавал iframe, указывающий на URL с данными, который вызывал бы диалог загрузки файла. Однако на этот раз данные на стороне клиента.

Итак, можно ли разрешить пользователю загружать данные без отправки их на сервер?

Ответы [ 2 ]

6 голосов
/ 12 апреля 2010

Если вам не нужно работать в «старых браузерах», таких как IE, вы можете открыть новое окно с местоположением 'data:text/plain,' + yourTextarea.value. Затем пользователь может сохранить этот файл с помощью меню «Файл / Страница» или Ctrl + S .

5 голосов
/ 12 апреля 2010

можно ли разрешить пользователю загружать данные без отправки их на сервер?

В общем случае №.

Это возможно с URL-адресом data:, как в ответе Янмозена (хотя вам следует кодировать URL-адрес значением, включаемым в URL-адрес, или вы можете столкнуться с повреждением, когда в данных появляется последовательность %nn).

Однако это становится непрактичным для очень длинных данных и недоступно в старых браузерах или IE. (IE8 позволяет использовать короткие URL-адреса данных для изображений, но не прямую навигацию.) Таким образом, хотя вы можете включить метод data-URL для улучшения процесса в браузерах, которые его поддерживают, вам все равно понадобится альтернативное решение для отправки формы данные на стороне сервера, и они в ответ выкладывают файл обратно.

(По соображениям безопасности это должно быть разрешено только в запросе POST, и сервер должен включать в ответ Content-Disposition: attachment. В противном случае скрипт content-echo может вызвать проблемы межсайтового скриптинга.)

...