Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
博客園注冊賬號有些天了,感覺有些許欣慰,自己寫的東西有人在看,有人在評論很是開心。(ps: 滿足一下虛榮心吧!)
廢話不多說了,說一下今天給大家分享的是 html5上傳圖片。我們是在移動端使用的,但是這個在pc上也通用兼容性我只在谷歌測試過。之前一直用的angular寫的《用HTML5的File API做上傳圖片預覽能》。今天摒棄angular的東西分享一個html5 + js 圖片上傳案例。那么今天還是按照一定的步驟來講吧。
HTML 上傳圖片
第一步創建html,我們在頁面中放置一個文件選擇的input#upload(PS:偷懶一下,這里就不再次寫案例了直接復制的我們的頁面)
<div class="con4"> <span class="btn upload">上傳<input type="file" class="upload_pic" id="upload" /></span> </div>
注: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; }
通過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請求 ... ... } };
寫到這里我們已經完成了圖片上傳的功能了,大家有興趣的自己動手嘗試一下,不懂的地方或者我寫錯的地方一定要找我哦。
參數/事件 | 描述 |
方法 | |
abort | 中斷讀取 |
readAsText(file, [encoding]) | 將文件讀取為文本 該方法有兩個參數,其中第二個參數是文本的編碼方式,默認值為 UTF-8。這個方法非常容易理解,將文件以文本方式讀取,讀取的結果即是這個文本文件中的內容。 |
readAsBinaryString(file) | 將文件讀取二進制碼 通常我們將它傳送到后端,后端可以通過這段字符串存儲文件 |
readAsDataURL(file) | 將文件讀取為DataURL 將文件讀取為一串Data URL字符串,將小文件以一種特殊格式的URL地址直接讀入頁面。小文件指圖像與html等格式的文件。 |
事件 | |
onabort | 數據讀取中斷時觸發 |
onerror | 數據讀取出錯時觸發 |
onloadstart | 數據讀取開始時觸發 |
onload | 數據讀取成功完成時觸發 |
onloadend | 數據讀取完成時觸發,無論成功失敗 |
祝大家學習愉快!終于寫完了估計還是有錯別字的。大家有不同見解的記得給我留言哦![小月博客]
017年,將有超過75%的互聯網流量來自移動端,移動互聯網的商機無可限量,企業除了注重電腦網站建設,也開始把目光轉向了手機建站,費用自然成了決定企業選擇哪家建站公司的關鍵因素,收費高大家承受不起,收費低又擔心質量沒保證。
網站建設費用主要分為兩部分,一部分是固定可以預見的,另一部分是潛在費用,難以估計的。
先說固定的部分,買域名、空間、建站系統。常規的.cn/.com域名,每年100元以內,手機站的空間800元以內已經能買很不錯的,建站系統在網上有很多免費的,要做HTML5網站的企業還要看清楚建站系統支不支持HTML5。固定費用就1000元左右。
潛在費用主要是網站制作、推廣和維護的費用,這才是很多企業建站的絆腳石。不會程序的企業找人做手機站,要加一般2000元起;推廣還要找人做SEO優化或者百度競價,價格都要千元以上,維護人員工資也是一筆不小的開支。潛在費用加起來,5000元以上是必須的。
此外,還要了解服務商的技術實力、服務質量和以往案例,以免服務商出問題后網站跟著遭殃。
手機網站還有一個局限性,不一定兼容所有的手機屏幕尺寸,要做很多都市場調研,了解主流尺寸,分別定制專屬的手機網站,這個過程會耗費企業很長時間。
其實,中小企業要想擁有HTML5手機站還有一個辦法,就是把自己的網站做成響應式。建站寶盒V9就能實現,企業只需做一個電腦網站,手機站、微信站也有了,還能根據大家的屏幕大小個性化布局,帶給用戶新鮮的體驗。全程傻瓜式操作,會打字就能建站,做HTML5網站就像做PPT一樣簡單。后期只需維護一個后臺,不用錢就能獲得免費推廣。重點來了,價格十分接地氣,不用一千元就能搞定企業網站,有營銷功能的行業建站解決方案也就兩千元,真正為中小企業省錢,質量用過的都說好。
建站寶盒V9,免費公測即將開啟:http://www.iisp.com/special/v9special/index.php
更多建站&互聯網行業資訊,敬請關注微信公眾號:耐思尼克(iisp-com)
TML5實現大文件分片上傳思路,利用HTML5分片上傳超大文件思路,WEBUPLOADER 支持 超大上G,多附件上傳,JS 大文件分割/分片上傳,百度WEBUPLOADER上傳視頻等大文件,WEBUPLOAD組件實現文件上傳功能和下載功能,JS大文件切片上傳,斷點續傳實現DEMO,前端上傳大文件的解決方案,前端上傳大文件處理(切片、斷點續傳),前端大文件上傳優化方案——分片上傳,vue大文件上傳解決方案,vue大文件上傳解決方案10G,vue大文件上傳解決方案50G,vue大文件上傳解決方案100G,html5如何實現大文件斷點續傳、秒傳,
java如何實現大文件斷點續傳、秒傳,SpringBoot如何實現大文件斷點續傳、秒傳,SpringMVC如何實現大文件斷點續傳、秒傳,SpringCloud如何實現大文件斷點續傳、秒傳,
webuploader如何實現大文件斷點續傳、秒傳,百度webuploader如何實現大文件斷點續傳、秒傳,html5實現大文件斷點續傳、秒傳,vue如何實現大文件斷點續傳、秒傳,前端如何實現大文件斷點續傳、秒傳,JavaScript如何實現大文件斷點續傳、秒傳,
html5大文件斷點續傳、秒傳解決方案,html5大文件斷點續傳、加密上傳解決方案,html5大文件斷點續傳、加密存儲解決方案,html5大文件斷點續傳分片解決方案,html5大文件斷點續傳分塊解決方案,html5大文件斷點續傳分割解決方案,html5大文件斷點續傳切割解決方案,
在網上找過相關的資料,論壇里面也有網友交流過,但是都不太令人滿意。
給政府做的一個項目。實際上客戶那邊對具體的技術實際不關心。
研發部門的同事調研過百度的webuploader這個組件,發現他實際上就是對Flash和HTML5進行了一個封裝,本質還是調的HTML5的API,之前在項目中也用過,嘗試過,但是最終都不太滿意,一個是兼容性非常差,說的是兼容IE,但是在IE用的是Flash,在很多用戶的電腦上用不了,卡頓崩潰發生的太頻繁,文件上傳的數量一多比如幾千個,前端頁面就開始卡了,用戶體驗非常差。這些問題研發部的同事都向百度反應過,但是百度webuploader那邊一直沒人回,基本上沒人管,領導說要求付費提供技術支持,那邊也是沒人回,聯系不上他們任何人。
webuploader這邊連個開發人員都聯系不到,這個是怎么回事?
搞的我們領導現在基本上不怎么考慮國內這些免費開源的項目,研發部門的同事稱這些項目為免費坑人項目。
用戶上傳的文件比較大,有20G左右,直接用HTML傳的話容易失敗,服務器也容易出錯,需要分片,分塊,分割上傳。也就是將一個大的文件分成若干個小文件塊來上傳,另外就是需要實現秒傳功能和防重復功能,秒傳就是用戶如果上傳過這個文件,那么直接在數據庫中查找記錄就行了,不用再上傳一次,節省時間,實現的思路是對文件做MD5計算,將MD5值保存到數據庫,算法可以用MD5,或者CRC,或者SHA1,這個隨便哪個算法都行。
分片還需要支持斷點續傳,現在HTML5雖然提供了信息記錄功能,但是只支持到了會話級,也就是用戶不能關閉瀏覽器,也不能清空緩存。但是有的政府單位上傳大文件,傳了一半下班了,明天繼續傳,電腦一關結果進度信息就丟失了,這個是他們的一個痛點。
切片的話還有一點就是在服務器上合并,一個文件的所有分片數據上傳完后需要在服務器端進行合并操作。
聊下HTML5吧,怎么說呢,HTML5也就是chrome提供的一個API來實現文件分片,反正基本的需求,小文件用是能用,但是用起來多多少少還是有點別扭,擴展性,安全性,穩定性用戶那陣都不太滿意,關鍵是什么,我們是沒辦法對HTML5進行擴展,個性化和定制化開發的,基本上被谷歌給限制死了,這也是現在國產化的意義,希望能夠打破這個限制。不然公司的一些產品和業務不太好開展,總不能用戶提個需求,我們就說谷歌Chrome沒提供API,所我們就無法開發吧。這不是跟客戶扯呢。
功能的話支持20G文件上傳和續傳,支持秒傳,支持文件夾上傳,支持在服務端保存文件夾層級結構,支持將文件夾層級結構信息保存到數據庫中,支持下載時能夠將文件夾層級結構下載下來,支持下載文件夾,下載文件夾支持斷點續傳,支持VUE2,VUE3,React,支持IE,Chrome和信創國產化環境,比如銀河麒麟,統信UOS,龍芯,支持加密傳輸,包括加密上傳,加密下載,加密算法支持國密SM4,支持云對象存儲,比如華為云,阿里云,騰訊云,七牛云,AWS,MinIO,FastDFS,需要提供手機,QQ,微信,郵箱等聯系方式,提供7*24小時技術支持,提供長期技術支持和維護服務,提供遠程1對1技術指導,提供二次開發指導,提供文檔教程,提供視頻教程。1.下載示例
https://gitee.com/xproer/up6-vue-cli
將up6組件復制到項目中
示例中已經包含此目錄
1.引入up6組件
2.配置接口地址
接口地址分別對應:文件初始化,文件數據上傳,文件進度,文件上傳完畢,文件刪除,文件夾初始化,文件夾刪除,文件列表
參考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de
3.處理事件
啟動測試
啟動成功
效果
數據庫
源碼工程文檔:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra
源碼報價單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl
OEM版報價單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a
控件源碼下載:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc
*請認真填寫需求信息,我們會在24小時內與您取得聯系。