最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

原生JS實(shí)現(xiàn)前端本地文件上傳

 更新時(shí)間:2018年09月08日 14:55:28   作者:想要飛的pig  
這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)前端本地文件上傳,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(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)文章

最新評(píng)論

鄯善县| 乌审旗| 花莲县| 万安县| 梁河县| 玉溪市| 建始县| 姜堰市| 汉川市| 河曲县| 蒙自县| 广昌县| 元朗区| 荔波县| 浙江省| 马山县| 兴隆县| 纳雍县| 抚顺县| 巫山县| 蒙城县| 阿克苏市| 洛川县| 大理市| 洪江市| 建水县| 特克斯县| 衡山县| 河曲县| 修水县| 郁南县| 碌曲县| 阿拉善右旗| 五峰| 卓资县| 吉林省| 泗阳县| 逊克县| 双牌县| 恩施市| 抚松县|