Загрузка файла с DataURL в JavaScript

Из этой строки мы получаем от DataURL, как лучше всего скачать это как файл?

До сих пор я использовал базовый window.open("myDataURL");, но я не могу изменить имя файла таким образом.

window.open('data:application/msword;base64,0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAA
             PgADAP7/CQAGAAAAAAAAAAAAAAACAAAANQAAAAAAA
             AAAEAAANwAAAAIAAAD+////AAAAADQAAABsAA/',
             '_blank','height=300,width=400');

Мне было интересно, есть ли способ правильно обрабатывать эти данные.


person eBergamo    schedule 09.01.2012    source источник
comment
См. stackoverflow.com/a/6465780/27862.   -  person user123444555621    schedule 09.01.2012
comment
Я видел этот вопрос раньше, имя файла становится rVPjLUq1.part, как если бы я использовал пример, который я разместил выше.   -  person eBergamo    schedule 09.01.2012
comment
Как пишет Владимир Палант, проблема обсуждалась в рассылке W3C. list, но, похоже, это пока не вошло в какую-либо спецификацию, не говоря уже о реализации в браузере. Боюсь, в этом вопросе нет никакого прогресса.   -  person user123444555621    schedule 10.01.2012


Ответы (2)


вы можете добавить атрибут download к элементу привязки. образец:

<a download="abcd.zip" href="data:application/stream;base64,MIIDhTCCAvKg........">download</a>
person cuixiping    schedule 13.09.2012
comment
Это не поддерживается в IE - person Nipuna; 27.08.2013
comment
Он также не решает вопрос OP об указании имени файла для атрибута window.open (из Javascript, а не HTML). - person srlm; 08.08.2014
comment
щелчок по ссылке откроет диалоговое окно загрузки, не обязательно window.open - person cuixiping; 08.08.2014

Попробуй это:

data:application/msword;fileName=test.doc;base64,0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAANQAAAAAAAAAAEAAANwAAAAIAAAD+////AAAAADQAAABsAA/

Но это всего лишь предположение из поиска в Интернете, и оно может зависеть от браузера. Настоящий ответ на этот вопрос: вы не можете. См. http://www.ietf.org/rfc/rfc2397 для справки, в спецификации нет ничего, что поддерживало бы имя файла.

person bardiir    schedule 09.01.2012
comment
Да, это не сработало. Это предназначено только для использования изображений? Потому что это не большое преимущество, если вы не можете повторно использовать это значение и воссоздать файл с ним. Я все еще ищу ответы, чтобы решить эту проблему... используя JSP или Java. Но я не вижу ссылок на то, как обрабатывать dataURL таким образом. - person eBergamo; 09.01.2012
comment
URI данных предназначены для обработки необработанных данных способом, совместимым с URI. Например, встраивание изображений или текста в другой документ, который в противном случае ожидал бы внешнего связанного элемента. - person bardiir; 09.01.2012
comment
Я понимаю. В нашем методе для получения содержимого файла мы используем наш reader.readAsDataURL(file);... Если вместо него я использую readAsBinaryString, смогу ли я после этого правильно воссоздать свои файлы (pdf, xls, docs)? - person eBergamo; 09.01.2012
comment
параметр fileName игнорируется. Файлы сохраняются как [random string].part - person powtac; 02.03.2012