HTML5之文件API

来源:http://www.cnblogs.com/BillyQin/archive/2016/12/08/6146452.html
-Advertisement-
Play Games

問題很簡單,做個上傳文件的頁面。 html頁面中簡單兩行代碼就完成基本的文件上傳頁面。如下圖。解決。 /***************************分割線********************/ 此時又來了一個新問題:如何獲取用戶上傳的這個文件的文件名、文件大小、文件類型? 效果如下圖。 ...


問題很簡單,做個上傳文件的頁面。

    <!-- multiple代表可上傳多個文件 -->
    <input type="file" id="file" multiple/>
    <input type="button" id="btn" value="上傳" />

html頁面中簡單兩行代碼就完成基本的文件上傳頁面。如下圖。解決。

/***************************分割線********************/

此時又來了一個新問題:如何獲取用戶上傳的這個文件的文件名、文件大小、文件類型?

var btn = document.getElementById("btn"),
    file = document.getElementById("file"),
    fileSize = document.getElementById("fileSize"),
    fileType = document.getElementById("fileType");

btn.onclick = function() {
    fileSize.innerHTML = file.files[0].size;  //files是一個數組,指的是第一個文件。
    fileType.innerHTML = file.files[0].type;  //獲取文件名是file.files[0].type
};

效果如下圖。解決

這個files就是一個文件集合的數組。他包含四個對象,分別是

  • name:該文件的文件名
  • size:文件的位元組大小。註意是位元組。[1kb==1024b(位元組),1b == 8bit(比特),1Mb == 1024kb]
  • type:文件的類型。(text/html、image/png)
  • lastModifiedDate:字元串,文件上一次被修改的時間。(目前只有Chrome支持)

/***************************分割線***************************/

此時又來一個新問題,用戶上傳了一張圖片,並想預覽一下?

這裡引入一個新類型FileReader。類似於XMLHttpRequest。

這個類型下有5個對象,分別是

readAsText(file,encoding):以純文本形式(text)讀取文件,將讀取到的文本保存在 result 屬性中。第二個參數用於指定編碼類型,是可選的。

readAsDataURL(file):讀取文件並將文件以數據 URI 的形式(圖片)保存在 result 屬性中。

readAsBinaryString(file):讀取文件並將一個字元串保存在 result 屬性中,字元串中每個字元表示一位元組。

readAsArrayBuffer(file):讀取文件並將一個包含文件內容的 ArrayBuffer 保存在result 屬性中。

abort(): 中斷讀取文件

還有6個方法,分別是:

onabort 中斷觸發
onerror 錯誤觸發
onprogress 讀取中觸發
onload 成功讀取後觸發
onloadend 無論失敗或成功後觸發

回歸正題。

var btn = document.getElementById("btn"),
    file = document.getElementById("file"),
    fileSize = document.getElementById("fileSize"),
    fileType = document.getElementById("fileType"),
    show = document.getElementById("show");
btn.onclick = function() {
    // fileSize.innerHTML = file.files[0].size;
    // fileType.innerHTML = file.files[0].type;
    var reader = new FileReader();    //先new一個對象。
    reader.readAsDataURL(file.files[0]); //重要的一步,獲取圖片內容,圖片的內容會保存在reader.result中
    reader.onload = function(){
        show.innerHTML = '<img src="'+ reader.result + '" alt="這是圖片"/>';//頁面顯示
    }
};

  

    <!-- multiple代表可上傳多個文件 -->
    <input type="file" id="file" multiple/>
    <input type="button" id="btn" value="上傳" />
    <br/>
    <!-- <span>文件大小:</span><span id="fileSize"></span><br/>
    <span>文件類型:</span><span id="fileType"></span><br/> -->
    <div id="show">
    </div>

 

真好看。

同理,還可以讀取text文本,n進位文件等。。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 參數驗證是一個常見的問題,無論是前端還是後臺,都需對用戶輸入進行驗證,以此來保證系統數據的正確性。對於web來說,有些人可能理所當然的想在前端驗證就行了,但這樣是非常錯誤的做法,前端代碼對於用戶來說是透明的,稍微有點技術的人就可以繞過這個驗證,直接提交數據到後臺。無論是前端網頁提交的介面,還是 ...
  • 上一篇介紹了Rainbow的Create方法, 這裡就來介紹一下Update方法吧, 畢竟新增和修改是雙胞兄弟嘛. 一、Update 1. 測試代碼: 使用方法和Insert方法類似, Update方法由兩個參數, 第一個參數是Id, 第二個參數是dynamic data, 如果你不想更新全部的列, ...
  • 1、IoC/DI簡介 IoC 即 Inversion of Control,DI 即 Dependency Injection,前一個中文含義為控制反轉,後一個譯為依賴註入,可以理解成一種編程模式,詳細的說明可參見大牛Martin Fowler的強文 http://martinfowler.com/ ...
  • 面向對象語言的三大特征之一就是多態,聽起來多態比較抽象,簡而言之就是同一行為針對不同對象得到不同的結果,同一對象,在不同的環境下得到不同的狀態。 實例說明: 業務需求:實現一個打開文件的控制台程式的demo,針對不同文件類型使用不同方式打開。 在這個案列中多態的要素 “同一行為”在這個實例中指的就是 ...
  • HTML CSS jQuery 我們先聲明變數,後面的代碼要用到以下變數。 接下來,我們自定義一個函數:getData(),用來獲取當前頁數據。函數中,我們利用$.ajax()向後臺pages.php發送POST非同步請求,將當前頁碼以JSON格式傳遞給後臺。 請求成功後並返回數據,將相應的數據附給變 ...
  • demo:https://zsqosos.github.io/weather/ 截圖: 實現功能:打開網頁時顯示用戶所在城市的天氣狀況,在輸入框輸入城市可查詢其它城市。 實現過程:先調用百度地圖的API來獲取用戶所在的城市,隨後調用聚合數據的天氣API將數據放在頁面上。由於ajax不支持跨域,所以採 ...
  • ng-options="item.action for item in todos" ng-options表達式的基本形式, 形如 "<標簽> for <項目> in <數組> <option value="">(chosse one) </option> ng-options="item.id a ...
  • 如圖,獲取網站中問號後的參數值。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...