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
后臺(tái)看到訪問記錄,很多用戶提了這個(gè)需求,要求用HTML5來實(shí)現(xiàn)。網(wǎng)上搜了一下,發(fā)現(xiàn)這類需求很多,相關(guān)的文章和代碼也很多,大部分用的是VUE,H5的也有,不過只提供了前端部分,后端的沒有。然后也不完善,花了很多的時(shí)間找了一些,有的用是能用,但是小問題太多,找這些能用的代碼,所花的時(shí)間都能夠完全自已寫一個(gè)出來了。很多代碼后續(xù)維護(hù)也是個(gè)問題,找不到原技術(shù)人員,也沒有完善的文檔,開發(fā)維護(hù)都靠自已,這樣花的時(shí)間有點(diǎn)不值得。
代碼:https://gitee.com/xproer/up6-vue-cli
1.引入up6組件
2.配置接口地址
接口地址分別對(duì)應(yīng):文件初始化,文件數(shù)據(jù)上傳,文件進(jìn)度,文件上傳完畢,文件刪除,文件夾初始化,文件夾刪除,文件列表
參考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de
3.定義事件
TML5實(shí)現(xiàn)大文件上傳下載,HTML5實(shí)現(xiàn)大文件上傳下載解決方案,HTML5實(shí)現(xiàn)大文件上傳下載思路,HTML5實(shí)現(xiàn)大文件上傳下載源碼,HTML5實(shí)現(xiàn)大文件上傳下載實(shí)例,HTML5實(shí)現(xiàn)大文件分塊上傳下載,HTML5實(shí)現(xiàn)大文件分片上傳下載,HTML5實(shí)現(xiàn)大文件切片上傳下載,HTML5實(shí)現(xiàn)大文件加密上傳下載,HTML5實(shí)現(xiàn)文件夾上傳下載,
用戶上傳的文件比較大,有20G左右,直接用HTML傳的話容易失敗,服務(wù)器也容易出錯(cuò),需要分片,分塊,分割上傳。也就是將一個(gè)大的文件分成若干個(gè)小文件塊來上傳,另外就是需要實(shí)現(xiàn)秒傳功能和防重復(fù)功能,秒傳就是用戶如果上傳過這個(gè)文件,那么直接在數(shù)據(jù)庫中查找記錄就行了,不用再上傳一次,節(jié)省時(shí)間,實(shí)現(xiàn)的思路是對(duì)文件做MD5計(jì)算,將MD5值保存到數(shù)據(jù)庫,算法可以用MD5,或者CRC,或者SHA1,這個(gè)隨便哪個(gè)算法都行。
分片還需要支持?jǐn)帱c(diǎn)續(xù)傳,現(xiàn)在HTML5雖然提供了信息記錄功能,但是只支持到了會(huì)話級(jí),也就是用戶不能關(guān)閉瀏覽器,也不能清空緩存。但是有的政府單位上傳大文件,傳了一半下班了,明天繼續(xù)傳,電腦一關(guān)結(jié)果進(jìn)度信息就丟失了,這個(gè)是他們的一個(gè)痛點(diǎn)。
切片的話還有一點(diǎn)就是在服務(wù)器上合并,一個(gè)文件的所有分片數(shù)據(jù)上傳完后需要在服務(wù)器端進(jìn)行合并操作。
支持文件下載,批量下載,下載斷點(diǎn)續(xù)傳,加密下載,端到端加密,加密算法支持國密SM4,多線程下載
支持在服務(wù)端保存文件夾層級(jí)結(jié)構(gòu),支持將文件夾層級(jí)結(jié)構(gòu)信息保存到數(shù)據(jù)庫中,支持下載時(shí)能夠?qū)⑽募A層級(jí)結(jié)構(gòu)下載下來,支持下載文件夾,下載文件夾支持?jǐn)帱c(diǎn)續(xù)傳,
支持加密傳輸,包括加密上傳,加密下載,加密算法支持國密SM4,
對(duì)于大文件的處理,無論是用戶端還是服務(wù)端,如果一次性進(jìn)行讀取發(fā)送、接收都是不可取,很容易導(dǎo)致內(nèi)存問題。所以對(duì)于大文件上傳,采用切塊分段上傳
從上傳的效率來看,利用多線程并發(fā)上傳能夠達(dá)到最大效率。
1.下載示例
https://gitee.com/xproer/up6-vue-cli
將up6組件復(fù)制到項(xiàng)目中
示例中已經(jīng)包含此目錄
1.引入up6組件
2.配置接口地址
接口地址分別對(duì)應(yīng):文件初始化,文件數(shù)據(jù)上傳,文件進(jìn)度,文件上傳完畢,文件刪除,文件夾初始化,文件夾刪除,文件列表
參考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de
3.處理事件
啟動(dòng)測(cè)試
啟動(dòng)成功
效果
數(shù)據(jù)庫
源碼工程文檔:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra
源碼報(bào)價(jià)單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl
OEM版報(bào)價(jià)單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a
產(chǎn)品源代碼:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc
授權(quán)碼生成器:https://drive.weixin.qq.com/s?k=ACoAYgezAAwTIcFph1
很多網(wǎng)站上,都有一個(gè)點(diǎn)擊圖片或點(diǎn)擊某個(gè)鏈接會(huì)將指定的圖片下載到本地的功能,而這個(gè)功能就需要html 元素中的 A 標(biāo)簽的 download 屬性來實(shí)現(xiàn),接下來飛鳥慕魚博客就來說一說關(guān)于使用html或js實(shí)現(xiàn)圖片點(diǎn)擊下載的功能。
download:屬性為 A 標(biāo)簽在 HTML5 中新增加的一個(gè)屬性,它可以強(qiáng)制觸發(fā)瀏覽器的下載操作。
語法:
<a href="text.jpg" download="下載后的文件名稱" >點(diǎn)擊我可下載圖片</a>
HTML代碼:
<a href="text.jpg" download="text"> <img src="text.jpg" > </a>
1、download 屬性規(guī)定被下載的超鏈接目標(biāo)。
2、在 <a> 標(biāo)簽中必須設(shè)置 href 屬性。
3、該屬性也可以設(shè)置一個(gè)值來規(guī)定下載文件的名稱。所允許的值沒有限制,
如果不方便使用A標(biāo)簽來實(shí)現(xiàn)下載,可以使用JS生成A元素的形式,來實(shí)現(xiàn)同樣的效果。
案例代碼:
<img id="mochu_img" src="test.jpg" > <button type="button" οnclick="Download_Img()">點(diǎn)擊下載圖片</button> <script> function Download_Img() { var img = document.getElementById('mochu_img'); // 獲取要下載的圖片 var url = img.src; // 獲取圖片地址 var a = document.createElement('a'); // 創(chuàng)建一個(gè)a節(jié)點(diǎn)插入的document var event = new MouseEvent('click') // 模擬鼠標(biāo)click點(diǎn)擊事件 a.download = 'mochu_img' // 設(shè)置a節(jié)點(diǎn)的download屬性值 a.href = url; // 將圖片的src賦值給a節(jié)點(diǎn)的href a.dispatchEvent(event) // 觸發(fā)鼠標(biāo)點(diǎn)擊事件 } </script>
1、并不是所有的瀏覽器支持此屬性,F(xiàn)irefox 和 Chrome是支持的
2、Chrome 瀏覽器,在本地測(cè)試時(shí)失效
3、download 屬性,為html5 中新增的屬性
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。