首頁 web前端 H5教程 HTML5 FileAPI圖程式碼分享

HTML5 FileAPI圖程式碼分享

Mar 28, 2017 pm 04:00 PM

HTML5中,提供了一個關於檔案操作的API,透過這個API,對於從web頁面存取本機檔案系統的相關處理變得十分簡單。到目前為止只有部分瀏覽器對它提供支援。

1.FileList物件和File物件

  FileList物件表示使用者選擇的檔案列表,在HTML4中file控制項內只允許放置一個文件,但在HTML5中透過新增multiple屬性,file控制項內允許放置多個文件。控制項內的每個使用者選擇的檔案都是一個file對象,而FileList就是這些file對象的列表,代表使用者選擇的所有檔案。 file物件有兩個屬性,一個是name,代表檔案名稱不包含檔案的路徑;一個是lastModifiedDate,表示檔案最後被修改的日期。

<!DOCTYPE html>
<html>
    <head>
        <meta charset=&#39;UTF-8&#39;/>
        <title>FileList and File </title>
        <script type="text/javascript" language="JavaScript">
function showFiles(){
var file,
                len = document.getElementById(&#39;file&#39;).files.length;//返回FileList文件列表对象
for (var i=0; i < len; i++) {
                  file = document.getElementById(&#39;file&#39;).files[i];
                  alert(file.name);
                };
                
            }            
</script>               
    </head>
    <body>
        <input type="file" id=&#39;file&#39; multiple="multiple" width="80px"/>
        <input type="button" id="bt1" value="click" onclick="showFiles();"/>
    </body>
</html>
登入後複製

2.Blob對象

  提到Blob對象,估計有人會想起OracleDB中Blob字段,意義上有些類似。 HTML5中Blob表示二進位原始數據,它提供一個slice()方法,可以透過這個方法存取到位元組內部的原始資料塊。事實上,上面提到的file物件繼承了Blob物件。

  Blob物件的兩個屬性,size:表示一個物件的位元組長度。 type:表示一個物件的MIME類型,如若是未知類型傳回空字串

function showFileInfo(){
                var file = document.getElementById(&#39;file&#39;).files[0];
                var size = document.getElementById(&#39;fileType&#39;);
                var type = document.getElementById(&#39;fileSize&#39;);
                size.innerHTML = file.size;
                type.innerHTML = file.type;
            }
登入後複製

  對於圖像類型的文件,Blob物件的type屬性都是以image/開頭,可以利用這個特性對使用者選擇的文件類型做判斷。

function showFileInfo(){
                var file = document.getElementById(&#39;file&#39;).files[0];
                if(checkImage(file)){
                var size = document.getElementById(&#39;fileType&#39;);
                var type = document.getElementById(&#39;fileSize&#39;);
                size.innerHTML = file.size;
                type.innerHTML = file.type;
                }
                else{
                    return ;
                }
            }
            function checkImage(file){
                if(!/img\/\w+/.test(file.type)){
                    alert(file.name + "不是图片");
                    return false;
                }
                return true;
            }
登入後複製

  另外,file控制項在HTML5標準中加入了accept屬性,用來限制接受的檔案類型,但目前各瀏覽器對齊支援都僅限於在開啟檔案選擇視窗時預設的選擇影像檔案而已,如果選擇其他類型,控制項也能接受。

3.FileReader介面

  3.1介面方法

  FileReader介面提供了四個方法,其中3個用來讀取檔案,1個用來中斷文件的讀取。

方法名稱參數描述
readAsBinaryString()file將檔案讀取為二進位字串,通常會將它傳到後端,後端可以透過這段字串儲存檔案
readAsDataURL( )file將檔案讀取為一段data url字串,事實上是將小檔案以一種特格式的URL位址直接讀取到頁面。小檔案通常指圖片與html等格式檔案
readAsText()file [encoding]將檔案以文字的方式讀取,其中第二個參數為文本的編碼。
abort()(none)#中斷讀取操作。

 

 

需要注意的是,無論讀取成功或失敗,方法都不會回傳讀取結果,結果回傳在result屬性中。

  3.2介面事件

  FileReader介面提供了一套完整的事件模型,用於擷取讀取檔案時的狀態。

事件描述
#onabort資料讀取中斷時發生
onerror資料讀取出錯時發生
#onloadstart資料讀取開始時發生
onload資料讀取成功完成時發生
#onloadend資料讀取完成時發生無論讀取成功還是失敗
onprogess資料讀取中
##  3.3實例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
        <title>FileReader</title>
        <meta name="description" content="" />
        <meta name="viewport" content="width=device-width; initial-scale=1.0" />
        <script type="text/javascript" language="JavaScript">
var file ,
                result; 
function  myLoad() {
                 file = document.getElementById(&#39;file&#39;).files[0];
                 result = document.getElementById(&#39;result&#39;);
            }
if(typeof FileReader == &#39;undefined&#39;){
                result.innerHTML = "你的浏览器不支持 FileReader";
                file.setAttribute("disabled","disabled");
            }
function readAsDataURL(){
if(!/image\/\w+/.test(file.type)){
                    alert(file.name + &#39;不是一个图片类型的文件&#39;);
                }else{
var reader = new FileReader();
                    reader.readAsDataURL(file);
                    reader.onload = function(e){
                        
                        result.innerHTML = "<img src=" + reader.result +"/>";
                    };
                }
            }
function readAsBinaryString(){
var reader = new FileReader();
                reader.readAsBinaryString(file);
                reader.onload = function(e){                    
                    result.innerHTML = reader.result;
                };
            }
function readAsText(){
var reader = new FileReader();
                reader.readAsText(file);
                reader.onload=function(e){                                       
                    result.innerHTML = reader.result;
                };
            }
</script>

    </head>
    <body onload="myLoad();">
        <p>
            <input type="file" id=&#39;file&#39;/>
            <input type=&#39;button&#39; id="bt_DataURL" value="读取图片" onclick="readAsDataURL();"/>
            <input type="button" id="bt_BinaryString" value="读取二进制字符串" onclick="readAsBinaryString();"/>
            <input type="button" id="bt_textString" value="读取文本信息" onclick="readAsText();"/>
        </p>   
        <div id="result">
            
        </div>
    </body>
</html>
登入後複製

以上是HTML5 FileAPI圖程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

HTML 中的表格邊框 HTML 中的表格邊框 Sep 04, 2024 pm 04:49 PM

HTML 表格邊框指南。在這裡,我們以 HTML 中的表格邊框為例,討論定義表格邊框的多種方法。

HTML 左邊距 HTML 左邊距 Sep 04, 2024 pm 04:48 PM

HTML 左邊距指南。在這裡,我們討論 HTML margin-left 的簡要概述及其範例及其程式碼實作。

HTML 中的巢狀表 HTML 中的巢狀表 Sep 04, 2024 pm 04:49 PM

這是 HTML 中巢狀表的指南。這裡我們討論如何在表中建立表格以及對應的範例。

HTML 表格佈局 HTML 表格佈局 Sep 04, 2024 pm 04:54 PM

HTML 表格佈局指南。在這裡,我們詳細討論 HTML 表格佈局的值以及範例和輸出。

HTML 輸入佔位符 HTML 輸入佔位符 Sep 04, 2024 pm 04:54 PM

HTML 輸入佔位符指南。在這裡,我們討論 HTML 輸入佔位符的範例以及程式碼和輸出。

HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

HTML 有序列表指南。在這裡我們也分別討論了 HTML 有序列表和類型的介紹以及它們的範例

在 HTML 中移動文字 在 HTML 中移動文字 Sep 04, 2024 pm 04:45 PM

HTML 中的文字移動指南。在這裡我們討論一下marquee標籤如何使用語法和實作範例。

HTML onclick 按鈕 HTML onclick 按鈕 Sep 04, 2024 pm 04:49 PM

HTML onclick 按鈕指南。這裡我們分別討論它們的介紹、工作原理、範例以及各個事件中的onclick事件。

See all articles