欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

本文實例為大家分享了JS實現(xiàn)前端本地文件上傳的具體代碼,供大家參考,具體內容如下

通過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)
}
//打印出的結果是文件名: C:\fakepath\css.jpg然后在是一個空對象

使用formData無法得到文件的內容,那么就使用FileReader來讀取整個文件的內容

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);

從打印結果來看,能清楚的知道上傳的文件信息是在input type = ‘file'dom對象中的files[0]中。
filereader.readAsDataURL是將flies[0]里的信息轉換成base64方式讀取。
filereader的讀取為以下格式:

  • readAsDataURL(this.files[0]) base64位讀取
  • readAsBinaryString(this.files[0]) 以二進制方式讀取讀取結果是UTF-8形式(被廢棄)
  • readAsArrayBuffer(this.flies[0]) 以二進制原始方法讀取,讀取結果可轉換成整數(shù)的數(shù)組
var files = document.getElementById('pic').files; 
//files是文件選擇框選擇的文件對象數(shù)組

if(files.length == 0) return; 

var form = new FormData(), 
  url = 'http://.......', //服務器上傳地址
  file = files[0];
form.append('file', file);

var xhr = new XMLHttpRequest();
xhr.open("post", url, true);

//上傳進度事件
xhr.upload.addEventListener("progress", function(result) {
  if (result.lengthComputable) {
    //上傳進度
    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); //開始上傳

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • JS實現(xiàn)可拖曳、可關閉的彈窗效果

    JS實現(xiàn)可拖曳、可關閉的彈窗效果

    這篇文章主要介紹了JS實現(xiàn)可拖曳、可關閉的彈窗效果,可實現(xiàn)點擊文字彈出可拖動的窗口,同時背景出現(xiàn)變暗的遮罩效果,點擊遮罩層即可關閉彈出,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • 實例詳解display:none與visible:hidden的區(qū)別

    實例詳解display:none與visible:hidden的區(qū)別

    這篇文章主要介紹了實例詳解display:none與visible:hidden的區(qū)別的相關資料,需要的朋友可以參考下
    2017-03-03
  • JS之Date對象和獲取系統(tǒng)當前時間詳解

    JS之Date對象和獲取系統(tǒng)當前時間詳解

    本篇文章主要是對JS之Date對象和獲取系統(tǒng)當前時間進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • JavaScript 讀取圖片實例代碼

    JavaScript 讀取圖片實例代碼

    本章主要介紹通過JavaScript讀取圖片的例子,本例子不包含服務器端后臺代碼,只包含前臺頁面代碼,所以直接用Html文件就可以,代碼如下,因為包含詳細的注意,所以不再詳細說明了,如果有看不明白的,可以給我留言,我給大家具體答復。
    2009-11-11
  • 小程序scroll-view組件實現(xiàn)滾動的示例代碼

    小程序scroll-view組件實現(xiàn)滾動的示例代碼

    這篇文章主要介紹了小程序scroll-view組件實現(xiàn)滾動的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • js當一個變量為函數(shù)時 應該注意的一點細節(jié)小結

    js當一個變量為函數(shù)時 應該注意的一點細節(jié)小結

    變量testFun為一個匿名函數(shù),匿名函數(shù)返回的一個testFun.init對象(也是一個匿名函數(shù))
    2011-12-12
  • JavaScript的parseInt 進制問題

    JavaScript的parseInt 進制問題

    今天在整理以前寫過的一段根據(jù)周期值自動計算下次執(zhí)行日期的js代碼,發(fā)現(xiàn)一bug,我使用parseInt對源數(shù)據(jù)串進行轉換,當輸入類似:2009-05-05時,parseInt將把串的05做8進制轉換,這樣結果自然就不對了。
    2009-05-05
  • 微信小程序實現(xiàn)跳轉詳情頁面

    微信小程序實現(xiàn)跳轉詳情頁面

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)跳轉詳情頁面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 通過高德地圖API獲得某條道路上的所有坐標用于描繪道路的方法

    通過高德地圖API獲得某條道路上的所有坐標用于描繪道路的方法

    這篇文章主要介紹了通過高德地圖API獲得某條道路上的所有坐標用于描繪道路的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • javascript 判斷字符串是否包含某字符串及indexOf使用示例

    javascript 判斷字符串是否包含某字符串及indexOf使用示例

    js javascript 判斷字符串是否包含某字符串,String對象中查找子字符及indexOf具體使用,感興趣的朋友可以參考下
    2013-10-10

最新評論