今天在用一個croppic的jQuery裁剪圖片的插件的時候,發如今後臺獲取圖片時,沒法經過Request.File獲取了,可是經過Request.Form[]能夠。用firebug跟了一下發現,圖片傳輸的數據不是一個文件流的形式進行提交的,而是一個表單元素,以下圖所示:javascript
通過一番度娘後,學習了新知識,原來是瀏覽器經過Data URI scheme 把圖片利用base64編碼把圖片數據翻譯成標準的ASCII字符。php
在上面的Data URI中,data表示取得數據的協定名稱,image/png 是數據類型名稱,base64 是數據的編碼方法,逗號後面就是這個image/png文件base64編碼後的數據。css
不僅是數據的提交,在數據的渲染時候,也能夠這麼用:<img src="data:image/jpg;base64,iVBORw0KGgo"/>等效於:<img src="http://www.oschina.net/img/logo_s2.png"/>html
優勢:Data URL是在本地直接繪製圖片,不是從服務器加載,因此節省了一個HTTP 請求,起到加速網頁的做用。
java
缺點:適合於小圖片,由於用這種方式會增長網頁的大小,因此文件太大了不合適,另外IE8如下瀏覽器不支持這種方法。用這種方法會加劇客戶端的CPU和內存負擔,由於瀏覽器不會緩存這種圖像。
瀏覽器
附加:asp.net後臺程序如何獲取這種編碼而且保存成文件呢?緩存
而後SaveAs一下就OK了。服務器
學習地址:http://www.jb51.net/css/41981.html http://www.cnblogs.com/xcsn/p/4677373.html https://www.lvtao.net/dev/php-image-data-url.html asp.net