js文件相關API

在表單中我們會用到上傳文件的操作,現就文件相關API做以下總結。
文件相關的對象主要有5個。


  • Blob對象: 是一個代表二進制數據的基本對象。構造函數有兩個參數,第一個參數為實際數據的數組,第二個為數據類型。

  • File對象: 負責處理那些以文件形式存在的二進制數據,也就是操作本地文件。它是FileList對象的成員,包含了文件的一些元信息。有如下屬性值:

    • name: 文件名。
    • size: 文件大小,單位為字節。
    • type: 文件的MIME類型。
    • lastModified: 文件的上次修改時間,格式為時間戳。
    • lastModifiedDate: 文件的上次修改時間,格式為Date對象實例。
  • FileList對象: 針對表單的file控件。當用戶通過file控件選取文件后,這個控件的files屬性值就是FileList對象。它在結構上類似于數組,包含用戶選取的多個文件。

  • FileReader對象: 負責將二進制數據讀入內存內容。采用異步方式讀取文件,可以為一系列事件指定回調函數。有多種讀取文件的方式。

    • readAsBinaryString(Blob|File):返回二進制字符串,該字符串每個字節包含一個0到255之間的整數。
    • readAsText(Blob|File, opt_encoding):返回文本字符串。默認情況下,文本編碼格式是’UTF-8’。
    • readAsDataURL(Blob|File):返回一個基于Base64編碼的data-uri對象。
    • readAsArrayBuffer(Blob|File):返回一個ArrayBuffer對象。
    • abort():中止讀取操作。
      除了上述方法外,還擁有三個只讀屬性。
    • readyState:FileReader對象的當前狀態。
    • result:讀取到的文件內容。
    • error:在讀取文件時發生的錯誤。
      事件有load,loadstart,loadend,error,abort,progress
  • URL對象: 用于生成指向File對象或Blob對象的URL。

    • createObjectURL(blob) 會對二進制數據生成一個URL。
    • revokeObjectURL(objectURL) 使URL失效。

代碼說明:

//css 
.wrap {
  position: relative;
 }
.hide {
  width: 100px;
  height: 30px;
  position: absolute;
  left: 0;
  z-index: 22;
  opacity: 0;
  cursor: pointer
}
.wrap span {
  height: 30px;
  width: 100px;
  position: absolute;
  left: 0;
  z-index: 11;
  color: blue;
  cursor: pointer;
}
//html
<div class="wrap">
  <input type="file" id="file" class="hide">
  <span>上傳文件</span>
</div>
//js
var fileDom = document.getElementById("file");        
fileDom.addEventListener('change',function(e){
  console.log(e.target.files);  // e.target.files === fileDom.files
  console.log(fileDom.files)
  var reader = new FileReader();
  reader.readAsText(e.target.files[0]);
  reader.onload = function (e) {
    console.log(e.target.result);  //e.target.result === reader.result
    console.log(reader.result);
  }
   var s = URL.createObjectURL(e.target.files[0])
   console.log(s)
}) 

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容