原生JS實(shí)現(xiàn)前端本地文件上傳
本文實(shí)例為大家分享了JS實(shí)現(xiàn)前端本地文件上傳的具體代碼,供大家參考,具體內(nèi)容如下
通過input type = file來選擇本地文件
<div> <form> <input type="file" id="file-input" name="fileContent"> </form> </div>
var fileInput = document.querySelector('#file-input'); fileInput.onchange = function(){ console.log('文件名:',this.value) var formData = new FormData(this.form); console.log(formData) } //打印出的結(jié)果是文件名: C:\fakepath\css.jpg然后在是一個(gè)空對(duì)象
使用formData無法得到文件的內(nèi)容,那么就使用FileReader來讀取整個(gè)文件的內(nèi)容
var fileInput = document.querySelector('#file-input'); fileInput.onchange = function(){ var filereader = new FileReader(); var fileType = this.files[0].type; filereader.onload = function(){ if(/^image\[jpeg|png|gif]/.test(fileType)){ console.log(this.result); } } console.log(this.files[0]); filereader.readAsDataURL(this.files[0]); } console.dir(fileInput);
從打印結(jié)果來看,能清楚的知道上傳的文件信息是在input type = ‘file'dom對(duì)象中的files[0]中。
filereader.readAsDataURL是將flies[0]里的信息轉(zhuǎn)換成base64方式讀取。
filereader的讀取為以下格式:
- readAsDataURL(this.files[0]) base64位讀取
- readAsBinaryString(this.files[0]) 以二進(jìn)制方式讀取讀取結(jié)果是UTF-8形式(被廢棄)
- readAsArrayBuffer(this.flies[0]) 以二進(jìn)制原始方法讀取,讀取結(jié)果可轉(zhuǎn)換成整數(shù)的數(shù)組
var files = document.getElementById('pic').files; //files是文件選擇框選擇的文件對(duì)象數(shù)組 if(files.length == 0) return; var form = new FormData(), url = 'http://.......', //服務(wù)器上傳地址 file = files[0]; form.append('file', file); var xhr = new XMLHttpRequest(); xhr.open("post", url, true); //上傳進(jìn)度事件 xhr.upload.addEventListener("progress", function(result) { if (result.lengthComputable) { //上傳進(jìn)度 var percent = (result.loaded / result.total * 100).toFixed(2); } }, false); xhr.addEventListener("readystatechange", function() { var result = xhr; if (result.status != 200) { //error console.log('上傳失敗', result.status, result.statusText, result.response); } else if (result.readyState == 4) { //finished console.log('上傳成功', result); } }); xhr.send(form); //開始上傳
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS實(shí)現(xiàn)可拖曳、可關(guān)閉的彈窗效果
這篇文章主要介紹了JS實(shí)現(xiàn)可拖曳、可關(guān)閉的彈窗效果,可實(shí)現(xiàn)點(diǎn)擊文字彈出可拖動(dòng)的窗口,同時(shí)背景出現(xiàn)變暗的遮罩效果,點(diǎn)擊遮罩層即可關(guān)閉彈出,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09實(shí)例詳解display:none與visible:hidden的區(qū)別
這篇文章主要介紹了實(shí)例詳解display:none與visible:hidden的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-03-03JS之Date對(duì)象和獲取系統(tǒng)當(dāng)前時(shí)間詳解
本篇文章主要是對(duì)JS之Date對(duì)象和獲取系統(tǒng)當(dāng)前時(shí)間進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-01-01小程序scroll-view組件實(shí)現(xiàn)滾動(dòng)的示例代碼
這篇文章主要介紹了小程序scroll-view組件實(shí)現(xiàn)滾動(dòng)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09js當(dāng)一個(gè)變量為函數(shù)時(shí) 應(yīng)該注意的一點(diǎn)細(xì)節(jié)小結(jié)
變量testFun為一個(gè)匿名函數(shù),匿名函數(shù)返回的一個(gè)testFun.init對(duì)象(也是一個(gè)匿名函數(shù))2011-12-12微信小程序?qū)崿F(xiàn)跳轉(zhuǎn)詳情頁面
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)跳轉(zhuǎn)詳情頁面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06通過高德地圖API獲得某條道路上的所有坐標(biāo)用于描繪道路的方法
這篇文章主要介紹了通過高德地圖API獲得某條道路上的所有坐標(biāo)用于描繪道路的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08javascript 判斷字符串是否包含某字符串及indexOf使用示例
js javascript 判斷字符串是否包含某字符串,String對(duì)象中查找子字符及indexOf具體使用,感興趣的朋友可以參考下2013-10-10