2012-08-28 32 views
0

使用数据uri在客户端创建文件有一个窍门。例如,要创建一个MS PowerPoint中,你可以这样做数据URL是否只接受Powerpoint的二进制文件或base 64?

<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

文档没问题,但是你的结论是错误的:数据URI不需要Base64。从文档:“sBase64Encoding ** Optional ** ...” –

+1

方括号表示可选 – Musa

+0

虽然也许文档暗示'data:,resource'是有效的。这可能或可能不是这种情况。 –

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> 

您应该看到“It works!”点击链接后。 (适用于Firefox和Chrome,兼容性表格,请参阅http://caniuse.com/datauri) 要生成可填充到Data URI中的纯文本内容,您需要在JavaScript中使用类似encodeURIComponent的东西,或者在PHP中使用rawurlencode

+0

+1关于网址编码的部分。这是必要的,因为在二进制数据中出现'%'序列的机会很小,而浏览器不会逐字解释,而是被解码。 –

+0

任何想法是什么将是你的Powerpoint? – dublintech

+0

对于PowerPoint文件,既然'ppt'和'pptx'都是二进制文件,所以我认为它们只能用base64编码的字符串表示。 – littlebtc