【小月博客】 Html5 上傳圖片 移動端、PC端通用

来源:http://www.cnblogs.com/aliyue/archive/2016/06/08/5569109.html
-Advertisement-
Play Games

在博客園註冊賬號有些天了,感覺有些許欣慰,自己寫的東西有人在看,有人在評論很是開心。(ps: 滿足一下虛榮心吧!) 廢話不多說了,說一下今天給大家分享的是 html5上傳圖片。我們是在移動端使用的,但是這個在pc上也通用相容性我只在谷歌測試過。之前一直用的angular寫的《用HTML5的File ...


在博客園註冊賬號有些天了,感覺有些許欣慰,自己寫的東西有人在看,有人在評論很是開心。(ps: 滿足一下虛榮心吧!)

廢話不多說了,說一下今天給大家分享的是 html5上傳圖片。我們是在移動端使用的,但是這個在pc上也通用相容性我只在谷歌測試過。之前一直用的angular寫的《用HTML5的File API做上傳圖片預覽能》。今天摒棄angular的東西分享一個html5 + js 圖片上傳案例。那麼今天還是按照一定的步驟來講吧。

HTML 上傳圖片

HTML 上傳圖片

HTML

第一步創建html,我們在頁面中放置一個文件選擇的input#upload(PS:偷懶一下,這裡就不再次寫案例了直接複製的我們的頁面)

<div class="con4">
     <span class="btn upload">上傳<input type="file" class="upload_pic" id="upload" /></span>
 </div>

 

CSS

註:css 寫的有些亂哈,看不懂的可以問我,或者直接自己寫一下就ok。

.con4{
     width: 80%;
     height: auto;
     overflow: hidden;
     margin: 15% auto 0 auto;
     color: #FFFFFF;
}
.con4 .btn{
     width: 45%;
     height: 40px;
     line-height: 40px;
     text-align: center;
     background: #d8b49c;
     display: block;
     font-size: 16px;
     border-radius: 5px;
}
.upload{
     float: left;
     position: relative;
}
.upload_pic{
     display: block;
     width: 100%;
     height: 40px;
     position: absolute;
     left: 0;
     top: 0;
     opacity: 0;
     border-radius: 5px;
}

Javascript

通過getElementById獲取節點,判斷瀏覽器的相容性,對於不支持FileReader介面的瀏覽器將給出一個提示並禁用input,否則監聽input的change事件。

//獲取上傳按鈕
var input1 = document.getElementById("upload"); 
 
if(typeof FileReader==='undefined'){ 
     //result.innerHTML = "抱歉,你的瀏覽器不支持 FileReader"; 
     input1.setAttribute('disabled','disabled'); 
}else{ 
     input1.addEventListener('change',readFile,false); 
}

 

然後,當file_input的change事件觸發時,調用函數readFile()。在readFile中,我們首先獲取file對象,然後通過file的type屬性來檢測文件類型,我們當然只允許選擇圖像類型的文件,然後我們new一個FileReader實例,並調用readAsDataURL方法來讀取選中的圖像文件,最後在onload事件中,獲取到成功讀取的文件內容,並以插入一個img節點的方式顯示選中的圖片。

function readFile(){ 
     var file = this.files[0]; 
     if(!/image\/\w+/.test(file.type)){ 
         alert("文件必須為圖片!"); 
         return false; 
     } 
     var reader = new FileReader(); 
     reader.readAsDataURL(file); 
     //當文件讀取成功便可以調取上傳的介面,想傳哪裡傳哪裡(PS: 你們可以把你們的靚照偷偷發給我!)
     reader.onload = function(e){ 
         var data = this.result.split(',');
         var tp = (file.type == 'image/png')? 'png': 'jpg';
         var a = data[1];
         //需要上傳到伺服器的在這裡可以進行ajax請求
         ... ...
     }
};

寫到這裡我們已經完成了圖片上傳的功能了,大家有興趣的自己動手嘗試一下,不懂的地方或者我寫錯的地方一定要找我哦。

 

FileReader的方法和事件

參數/事件 描述
方法
abort 中斷讀取
readAsText(file, [encoding]) 將文件讀取為文本
該方法有兩個參數,其中第二個參數是文本的編碼方式,預設值為 UTF-8。這個方法非常容易理解,將文件以文本方式讀取,讀取的結果即是這個文本文件中的內容。
readAsBinaryString(file) 將文件讀取二進位碼
通常我們將它傳送到後端,後端可以通過這段字元串存儲文件
readAsDataURL(file) 將文件讀取為DataURL
將文件讀取為一串Data URL字元串,將小文件以一種特殊格式的URL地址直接讀入頁面。小文件指圖像與html等格式的文件。
事件
onabort 數據讀取中斷時觸發
onerror 數據讀取出錯時觸發
onloadstart 數據讀取開始時觸發
onload 數據讀取成功完成時觸發
onloadend 數據讀取完成時觸發,無論成功失敗

祝大家學習愉快!終於寫完了估計還是有錯別字的。大家有不同見解的記得給我留言哦![小月博客]


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

-Advertisement-
Play Games
更多相關文章
  • 跨域問題一直是前端中常見的問題,每當說到跨域,第一浮現的技術必然就是JSONP JSONP在我的理解,它並不是ajax,它是在文檔中插入一個script標簽,創建_callback方法,通過伺服器配合執行_callback方法,並傳入一些參數 JSONP的局限就在於,因為是通過插入script標簽, ...
  • 人生的第一份前端工作找到了,感謝大神主子們給半路出家自學的我這麼多的機會,很高興正式踏上客觀又樂趣滿滿的程式員之路,哇咔咔咔。 ​ 分享一個準備面試時遇到的一個有趣的問題: 要求實現類似 調用方式的方法,例如add為加法函數,則調用 輸出3,調用 輸出9。 ​ 函數的調用方式是多次調用同一個函數,將 ...
  • 1、sublime_text下載 https://www.sublimetext.com/3 (選擇相對應的版本) 2、通過package control安裝插件 https://packagecontrol.io/ (package control網站) 在sublime編輯器通過Ctrl+`打開 ...
  • 儘管 HTML5 的完全實現還有很長的路要走,但 HTML5 正在改變 Web,未來 HTML5 將把 Web 帶入一個更加成熟和開放的應用平臺。現在,越來越多的人嘗試用 HTML5 來製作網頁游戲等豐富的 Web 應用。今天要與大家分享的是 21 款基於 HTML5 的游戲,讓大家體驗一下 HTM ...
  • 今天又次體會到jquery的強大了,做了個多級覆選框的效果,代碼總共就20+行就over了。 我又想用js來做一個看看,才寫了幾個方法就寫不動了,相容性要考慮很多,而且代碼量直線上升。 主要分享下jquery的這個效果的實現。代碼塊分兩塊: 一是全選的效果,就是點擊全選的覆選框時它的子孫都相應被選中 ...
  • javascript/js的ajax的GET請求: <script type="text/javascript"> /* 創建 XMLHttpRequest 對象 */ var xmlHttp; function GetXmlHttpObject(){ if (window.XMLHttpReque ...
  • checkbox和radio的美化 checkbox: <style type="text/css"> input[type="checkbox"] { display: none; } input[type="checkbox"] + label { display: inline-block; ...
  • 面向對象的一個標誌是它們都有類的概念,而JavaScript中沒有類的概念,因此它的對象與其他語言基於類的對象定義不同。 理解對象 前面介紹過對象的兩種創建方式:構造函數和對象字面量: var p = new Object(); p.name = "蕭蕭弈寒"; p.blog = "cnblogs. ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...