日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

html之file标签 --- 图片上传前预览 -- FileReader

發(fā)布時(shí)間:2023/12/9 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html之file标签 --- 图片上传前预览 -- FileReader 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

 記得以前做網(wǎng)站時(shí),曾經(jīng)需要實(shí)現(xiàn)一個(gè)圖片上傳到服務(wù)器前,先預(yù)覽的功能。當(dāng)時(shí)用html的<input type="file"/>標(biāo)簽一直實(shí)現(xiàn)不了,最后舍棄了這個(gè)標(biāo)簽,使用了其他方式來實(shí)現(xiàn)了這個(gè)功能。

  今天無意發(fā)現(xiàn)了一個(gè)知識(shí)點(diǎn),用html的file標(biāo)簽就能實(shí)現(xiàn)圖片上傳前預(yù)覽,感覺很棒,記錄一下!就是通過file標(biāo)簽和js的FileReader接口,把選擇的圖片文件調(diào)用readAsDataURL方法,把圖片數(shù)據(jù)轉(zhuǎn)成base64字符串形式顯示在頁面上。

1、閑話少說,測試一下,圖片上傳前預(yù)覽(選擇圖片):

??

?實(shí)現(xiàn)代碼:

<div style="border:2px dashed red;"><p>圖片上傳前預(yù)覽:<input type="file" id="xdaTanFileImg" οnchange="xmTanUploadImg(this)" accept="image/*"/><input type="button" value="隱藏圖片" οnclick="document.getElementById('xmTanImg').style.display = 'none';"/><input type="button" value="顯示圖片" οnclick="document.getElementById('xmTanImg').style.display = 'block';"/></p><img id="xmTanImg"/><div id="xmTanDiv"></div></div><hr /><script type="text/javascript"> //判斷瀏覽器是否支持FileReader接口if (typeof FileReader == 'undefined') {document.getElementById("xmTanDiv").InnerHTML = "<h1>當(dāng)前瀏覽器不支持FileReader接口</h1>";//使選擇控件不可操作document.getElementById("xdaTanFileImg").setAttribute("disabled", "disabled");}//選擇圖片,馬上預(yù)覽function xmTanUploadImg(obj) {var file = obj.files[0];console.log(obj);console.log(file);console.log("file.size = " + file.size); //file.size 單位為bytevar reader = new FileReader();//讀取文件過程方法reader.onloadstart = function (e) {console.log("開始讀取....");}reader.onprogress = function (e) {console.log("正在讀取中....");}reader.onabort = function (e) {console.log("中斷讀取....");}reader.onerror = function (e) {console.log("讀取異常....");}reader.onload = function (e) {console.log("成功讀取....");var img = document.getElementById("xmTanImg");img.src = e.target.result;//或者 img.src = this.result; //e.target == this}reader.readAsDataURL(file)}</script>

?

------------------------------- ?end ?-----------------------------

?

2、另外?FileReader除了有函數(shù)readAsDataURL,另外還有另外兩個(gè)函數(shù)readAsBinaryString 和?readAsText,分別可以將選擇的文件讀取成二進(jìn)制和文本格式?

測試一下,選擇文本(txt、cs、html、js、css、xml),讀取成二進(jìn)制或者文本:

選擇文件:?????

?實(shí)現(xiàn)代碼:

<script type="text/javascript">//判斷瀏覽器是否支持FileReader接口if (typeof FileReader == 'undefined') {document.getElementById("xmTanContentDiv").InnerHTML = "<p>當(dāng)前瀏覽器不支持FileReader接口!</p>";document.getElementById("xmTanFile").setAttribute("disabled", "disabled");}//選擇文件function xmTanUploadFile(obj){if (obj.files.length < 1) return;var file = obj.files[0];if (file.size > 1024 * 1024) {alert("文件大于1M, 太大了,小點(diǎn)吧!");obj.value = "";return;}}//讀取文件為二進(jìn)制function readAsBinaryString() {var obj = document.getElementById("xmTanFile");if (obj.files.length < 1) return;var file = obj.files[0];var reader = new FileReader();//將文件以二進(jìn)制形式讀入頁面reader.readAsBinaryString(file);reader.onload = function (f) {document.getElementById("xmTanContentDiv").innerHTML = this.result;}}//讀取文件為文本function readAsText() {var obj = document.getElementById("xmTanFile");if (obj.files.length < 1) return;var file = obj.files[0];var reader = new FileReader();//將文件以文本形式讀入頁面reader.readAsText(file);reader.onload = function (f) {document.getElementById("xmTanContentDiv").innerHTML = this.result;}}</script><div style="border: 2px dashed red; padding: 20px 0px;"><label>選擇文件:</label><input type="file" id="xmTanFile" accept=".html,.js,.css,.txt,.cs,.xml" οnchange="xmTanUploadFile(this)"/><input type="button" value="讀取成二進(jìn)制數(shù)據(jù)" οnclick="readAsBinaryString()" /><input type="button" value="讀取成文本數(shù)據(jù)" οnclick="readAsText()" /><input type="button" value="隱藏讀取內(nèi)容" οnclick="document.getElementById('xmTanContentDiv').style.display = 'none';"/><input type="button" value="顯示讀取內(nèi)容" οnclick="document.getElementById('xmTanContentDiv').style.display = 'block';"/><div id="xmTanContentDiv"></div></div>

?

?---------------------------

3、----------- a標(biāo)簽之download屬性 -------------

  ?設(shè)置a標(biāo)簽href為圖片鏈接,再設(shè)置download屬性,點(diǎn)此鏈接可以直接下載圖片

  

點(diǎn)此下載

實(shí)現(xiàn)代碼:

<div style="text-align:center; padding: 5px 20px;width: 70%;"><img id="xmTanShowImg" src=""/><h1><a href="javascript:void()" download="girl.jpg" id="xmTanDownload">點(diǎn)此下載</a></h1></div><script type="text/javascript">//圖片轉(zhuǎn)成base64位字符串?dāng)?shù)據(jù)var imgData = "data:image/png;base64,.........";//或直接設(shè)置圖片鏈接: var imgData = "images/picture.png";document.getElementById("xmTanShowImg").setAttribute("src", imgData); //給圖片標(biāo)簽設(shè)置srcdocument.getElementById("xmTanDownload").setAttribute("href", imgData); //給a標(biāo)簽設(shè)置href</script>

轉(zhuǎn)載于:https://www.cnblogs.com/1030351096zzz/p/6649667.html

總結(jié)

以上是生活随笔為你收集整理的html之file标签 --- 图片上传前预览 -- FileReader的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。