2012-08-28 33 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