2012-08-28 1 views
0

Существует трюк для создания файлов на клиенте с использованием данных uri. Например, чтобы создать MS PowerPoint вы можете сделать что-то вродеИмеет ли URL-адрес данных только двоичные файлы или базу 64 для Powerpoint?

<a href="data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64,UEsDBBQACAAIAGeGhT8AAAAAAAAAAAAAAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbM2ay27bMBBF9wX6D4K2hUWbbtO0sJNFH6s+AiT9AFYa22wlkiBpN/77UnLaKEFsiNUQnY1smZw7B0MNLwFrcXnb1NkOrJNaLfNZMc0zU..." download="jones6.pptx"> Test File 3 </a> 

ли только данные, которые могут быть указаны в в URL является base64 или двоичное представление файла? Можно ли выразить любое другое представление файла?

+2

Это не двоичный, а базовый 64 ... –

+0

Хорошо обновит вопрос. – dublintech

+0

http://en.wikipedia.org/wiki/Data_URI_scheme#Format –

ответ

0

Синтаксис протокола данных выглядит следующим образом:

data:[sMediaType;][sBase64Encoding;],sResourceData 

(http://msdn.microsoft.com/en-us/library/cc848897(v=vs.85).aspx)

Как вы можете видеть, не существует какой-либо вариант для кодирования без base64.

+0

Документация в порядке, но ваш вывод неверен: Base64 не требуется для URI данных. Из документов: «sBase64Encoding ** Необязательный ** ...» –

+1

Квадратные скобки означают необязательный – Musa

+0

Хотя, возможно, документация подразумевает, что «данные:, ресурс» действительны. Это может быть или не быть. –

3

Поддерживается как Base64, так и простой контент. Например, вы также можете использовать HTML:

<a href="data:text/html;charset=UTF-8,%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3Ctitle%3ETest%3C%2Ftitle%3E%3C%2Fhead%3E%3Cbody%3E%3Ch3%3EIt%20works!%3C%2Fh3%3E%3C%2Fbody%3E%3C%2Fhtml%3E">Click Here!</a> 

Вы должны увидеть «Это работает!». после нажатия ссылки. (Работает в Firefox и Chrome для таблицы совместимости, см. http://caniuse.com/datauri) Чтобы создать простой контент, который может быть заполнен в URI данных, вам нужно использовать что-то вроде encodeURIComponent в JavaScript или rawurlencode в PHP.

+0

+1 для части о кодировании url. Это необходимо, так как существует небольшая вероятность того, что в двоичных данных появится последовательность '% ', которая не интерпретируется буквально браузером, а расшифровывается. –

+0

Любые идеи, какими были бы для вас powerpoint? – dublintech

+0

Для файлов PowerPoint, так как оба 'ppt' и' pptx' являются двоичными файлами, поэтому я думаю, что они могут быть представлены только в кодировке base64. – littlebtc