整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          HTML實(shí)現(xiàn)文件夾的上傳和下載

          TML實(shí)現(xiàn)文件夾的上傳和下載,前端如何用HTML5實(shí)現(xiàn)分片上傳GB級(jí)大文件,網(wǎng)頁中實(shí)現(xiàn)文件上傳下載的三種解決方案(推薦),HTML5實(shí)現(xiàn)文件批量上傳組件,JQUERY 實(shí)現(xiàn)文件夾上傳(保留目錄結(jié)構(gòu)),B/S大文件上傳支持?jǐn)帱c(diǎn)上傳,WebService 大文件上傳,斷點(diǎn)續(xù)傳分片,HTML+AJAX實(shí)現(xiàn)上傳大文件問題,用HTML實(shí)現(xiàn)本地文件的上傳,HTML5實(shí)現(xiàn)大文件上傳,HTML5實(shí)現(xiàn)大文件分片上傳思路,利用HTML5分片上傳超大文件思路,

          WEBUPLOADER 支持 超大上G,多附件上傳,JS 大文件分割/分片上傳,

          百度WEBUPLOADER上傳視頻等大文件,WEBUPLOAD組件實(shí)現(xiàn)文件上傳功能和下載功能,JS大文件切片上傳,斷點(diǎn)續(xù)傳實(shí)現(xiàn)DEMO,前端上傳大文件的解決方案,前端上傳大文件處理(切片、斷點(diǎn)續(xù)傳),前端大文件上傳優(yōu)化方案——分片上傳,vue大文件上傳解決方案,vue大文件上傳解決方案10G,vue大文件上傳解決方案50G,vue大文件上傳解決方案100G,html5如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,

          java如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,SpringBoot如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,SpringMVC如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,SpringCloud如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,

          webuploader如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,百度webuploader如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,html5實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,vue如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,前端如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,JavaScript如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,

          html5大文件斷點(diǎn)續(xù)傳、秒傳解決方案,html5大文件斷點(diǎn)續(xù)傳、加密上傳解決方案,html5大文件斷點(diǎn)續(xù)傳、加密存儲(chǔ)解決方案,html5大文件斷點(diǎn)續(xù)傳分片解決方案,html5大文件斷點(diǎn)續(xù)傳分塊解決方案,html5大文件斷點(diǎn)續(xù)傳分割解決方案,html5大文件斷點(diǎn)續(xù)傳切割解決方案,

          后端我們公司項(xiàng)目組選的是JAVA,因?yàn)楣居凶约旱漠a(chǎn)品,所以直接使用就行了,針對(duì)客戶需求這塊是進(jìn)行擴(kuò)展。

          客戶這邊實(shí)際上要傳的文件單個(gè)大小就有50G左右,所以需要支持?jǐn)帱c(diǎn)續(xù)傳和分片上傳,并且要支持多線程上傳,能夠充分利用帶寬資源。

          之前在網(wǎng)上找過相關(guān)的資料,論壇里面也有網(wǎng)友交流過,還加過很多QQ群和微信群,但是結(jié)果都不太令人滿意。

          技術(shù)選型的話用的是jquery,也是一個(gè)企業(yè)內(nèi)網(wǎng)系統(tǒng),用的是之前公司的框架,只是進(jìn)行功能擴(kuò)展

          分片網(wǎng)上討論的很多,基本上全部都是用的HTML5的API,這個(gè)方案也不是不能用,但是在IE下面就不行了,兼容性差了點(diǎn),并且也不能進(jìn)行擴(kuò)展,不能進(jìn)行二次開發(fā),限制性非常大,我們技術(shù)同事提的要求是需要提供產(chǎn)品完整源代碼,

          網(wǎng)上的文章全部都沒有提供文件夾上傳和續(xù)傳的代碼,也沒有提供數(shù)據(jù)庫操作的代碼,

          另外這塊我們是要求必須提供產(chǎn)品完整源代碼,因?yàn)楹竺嫖覀冃枰砸褋砭S護(hù),同時(shí)是要求能夠自主可控的

          研發(fā)部門的同事調(diào)研過百度的webuploader這個(gè)組件,發(fā)現(xiàn)他實(shí)際上就是對(duì)Flash和HTML5進(jìn)行了一個(gè)封裝,本質(zhì)還是調(diào)的HTML5的API,之前在項(xiàng)目中也用過,嘗試過,但是最終都不太滿意,一個(gè)是兼容性非常差,說的是兼容IE,但是在IE用的是Flash,在很多用戶的電腦上用不了,卡頓崩潰發(fā)生的太頻繁,文件上傳的數(shù)量一多比如幾千個(gè),前端頁面就開始卡了,用戶體驗(yàn)非常差。這些問題研發(fā)部的同事都向百度反應(yīng)過,但是百度webuploader那邊一直沒人回,基本上沒人管,領(lǐng)導(dǎo)說要求付費(fèi)提供技術(shù)支持,那邊也是沒人回,聯(lián)系不上他們?nèi)魏稳恕?/p>

          webuploader這邊連個(gè)開發(fā)人員都聯(lián)系不到,這個(gè)是怎么回事?

          用戶上傳的文件比較大,有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è)算法都行。

          切片的話還有一點(diǎn)就是在服務(wù)器上合并,一個(gè)文件的所有分片數(shù)據(jù)上傳完后需要在服務(wù)器端進(jìn)行合并操作。

          視頻教程:https://www.ixigua.com/7227314770696012322

          導(dǎo)入項(xiàng)目:
          導(dǎo)入到Eclipse:http://www.ncmem.com/doc/view.aspx?id=9da9c7c2b91b40b7b09768eeb282e647
          導(dǎo)入到IDEA:http://www.ncmem.com/doc/view.aspx?id=9fee385dfc0742448b56679420f22162
          springboot統(tǒng)一配置:http://www.ncmem.com/doc/view.aspx?id=7768eec9284b48e3abe08f032f554ea2

          下載示例:

          https://gitee.com/xproer/up6-jsp-eclipse/tree/6.5.40/

          工程

          NOSQL

          NOSQL示例不需要任何配置,可以直接訪問測試

          創(chuàng)建數(shù)據(jù)表

          選擇對(duì)應(yīng)的數(shù)據(jù)表腳本,這里以SQL為例

          修改數(shù)據(jù)庫連接信息

          訪問頁面進(jìn)行測試

          文件存儲(chǔ)路徑

          up6/upload/年/月/日/guid/filename

          相關(guān)問題:
          1.javax.servlet.http.HttpServlet錯(cuò)誤
          2.項(xiàng)目無法發(fā)布到tomcat
          3.md5計(jì)算完畢后卡住
          4.服務(wù)器找不到config.json文件

          相關(guān)參考:

          文件保存位置

          源碼工程文檔: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)頁下載下來使用,在日常工作中使用頻率還是很高的,有時(shí)候確實(shí)能解一時(shí)之急,我自己就有很窘迫的經(jīng)歷。

          我開會(huì)的時(shí)候,都會(huì)把準(zhǔn)備好的文檔存在局域網(wǎng),到會(huì)議室直接打開就能直接用了。有一次到分公司,由于分公司剛剛成立,內(nèi)網(wǎng)還沒有和母公司連通。結(jié)果這下子懵逼了,上不去內(nèi)網(wǎng),看不到文檔。又是叫同事發(fā)過來,又是提發(fā)送文件的安全申請(qǐng),讓人著急。

          如果把網(wǎng)站保存下來,放在自己的電腦中,既不用擔(dān)心信息泄露問題,又不用為了看不了文檔而著急。

          遇到問題,記錄下來,然后解決問題,程序員的解決思路永遠(yuǎn)是自己創(chuàng)造輪子的,接下來就是不斷的探索解決方案。

          其實(shí)下載網(wǎng)頁的方式有很多種,其中有幾種辦法使用的比較多,例如:如果你用Chrome,直接按 Ctrl+s 就可實(shí)現(xiàn)。使用這種方法,Chrome會(huì)把整個(gè)網(wǎng)站,按照編譯完成的源碼目錄結(jié)構(gòu)保存下來。像下面這樣:

          下載完成的文件直接點(diǎn)擊 xxx.html 可以直接離線訪問,但是這種方式對(duì)目錄的依賴結(jié)構(gòu)比較高,怎么理解呢?就是 html 文件和對(duì)應(yīng)文件名的文件夾必須在同一個(gè)目錄中,才能正常使用。拷貝到其他機(jī)器的時(shí)候必須要兩個(gè)同時(shí)拷貝才可以,否則就會(huì)排版錯(cuò)亂。

          如果有十個(gè)或者更多的網(wǎng)頁需要拷貝或者刪除,就會(huì)很麻煩,例如我想在其中找到其中幾個(gè),復(fù)制到其他地方,很容易弄錯(cuò)順序。

          HTML 是一種純文本格式,它用于排版文字。純文本文檔的意思就是,文檔中只包含文字內(nèi)容,不包含二進(jìn)制內(nèi)容,舉個(gè)例子:打印出的A4紙,只有文字沒有圖片。而 HTML 想要顯示照片等二進(jìn)制信息,通常都會(huì)鏈接到其他文件,也就是上面文件夾里面的內(nèi)容。

          不過 Chrome 下載文件這種方式也有優(yōu)點(diǎn),下載下來的文件可以保持獨(dú)立性,比如說,我需要這個(gè)網(wǎng)頁中的一張圖片,那么就可以直接到文件夾里面尋找了。

          另外還有一種辦法,也有很多人再使用。Chrome 在打印網(wǎng)頁的時(shí)候,會(huì)把網(wǎng)頁轉(zhuǎn)成 PDF ,然后在進(jìn)行打印。那么就給我們提供了很明確的思路,把網(wǎng)頁直接保存為 PDF ,這樣保存下來的網(wǎng)頁就只有一個(gè)文件。

          使用Chrome,直接按下Ctrl+p就可以。然后目標(biāo)打印機(jī)選擇 另存為 PDF 。

          這個(gè)功能很多瀏覽器都支持

          但是這種辦法也有很明顯的缺點(diǎn),由于 PDF 是靜態(tài)文檔,網(wǎng)頁上的一些動(dòng)畫可能不會(huì)正常顯示,而且排版也有可能會(huì)錯(cuò)亂,這完全靠運(yùn)氣。個(gè)人覺得這不是一種很靠譜的方法。

          這時(shí)候主角來了!有一個(gè)工具既可以把網(wǎng)頁保存為 html 又可以保持是單文件。他就是 monolith ,你可以在 github 上面找到它,但是源碼并沒有編譯為可執(zhí)行文件,我把它編譯了一下,下面會(huì)放上來鏈接,https://github.com/leconio/Repos/raw/master/monolith.7z。

          那么下面就簡單說說使用方法:如果你下載我的鏈接,那么里面有三個(gè)文件:

          第一個(gè)是Mac平臺(tái)編譯出來的,使用方式為:

          ./monolith 網(wǎng)站地址 > xxx.html
          

          默認(rèn)情況下 monolith 會(huì)把生成的 html 輸出到標(biāo)準(zhǔn)輸出流,也就是當(dāng)前終端。使用 > 我們把輸出的內(nèi)容重定向并覆蓋到文件。

          執(zhí)行完成之后,在這個(gè)目錄下面就會(huì)有一個(gè)對(duì)應(yīng)的文件:xxx.html 。

          另外兩個(gè)是 Windows 平臺(tái)使用的。為了簡化使用,我寫了一個(gè) CMD 腳本。直接點(diǎn)擊 monolith.cmd ,然后粘貼地址就可以完成下載。

          下載完成之后,在本地你會(huì)發(fā)現(xiàn)只有一個(gè) html 文件。我們打開之后,發(fā)現(xiàn)圖片和JS等信息都在,而且排版正常。那么就要思考了,我們之前說過,HTML 是放置純文本信息的,那么圖片在哪里呢?

          答案顯而易見,就在 HTML 文件里面。為了方便小圖片傳輸,有一種叫 Base64 的東西,它可以把二進(jìn)制信息變成成純文本。這在使用 Json 傳遞數(shù)據(jù)的今天十分常見,它可以減少一次請(qǐng)求(題外話),這里就是用的這個(gè)原理。monolith 把圖片等二進(jìn)制內(nèi)容轉(zhuǎn)為了純文本,保存在 HTML 文件中。我們?cè)谙螺d的文件源碼可以看到:

          對(duì)比源代碼,src 信息已經(jīng)變成了 base64 格式的圖片,就是那串亂碼。復(fù)制那串亂碼,從網(wǎng)上搜一個(gè) base64 轉(zhuǎn)圖片工具,粘貼進(jìn)去,這時(shí)會(huì)發(fā)現(xiàn)就是我們看到的那張圖片。這樣一來,無論這個(gè)網(wǎng)站上有多少個(gè)文件,都會(huì)保存到一個(gè) HTML 文件里面,而且還能離線使用。

          當(dāng)然,base64 編碼的圖片比原生圖片略大,這可能也是你現(xiàn)在在擔(dān)心的問題。不過 monolith 會(huì)特殊處理文件體積。我們可以看看 Chrome 直接下載和使用 monolith 下載體積相差多少。我們把兩種方式下載的網(wǎng)頁都進(jìn)行了 7-Zip 壓縮。

          我們可以看到,使用 monolith 下載會(huì)比 Chrome 直接下載小一倍還多!

          最后要說的是局限性,無論那種方法,都幾乎不能把視頻網(wǎng)站中的視頻下載下來。因?yàn)楝F(xiàn)在的視頻地址都是 Token 加密的,同理,使用 Token 加密的其他請(qǐng)求信息也無法下載。

          比如你可以試試下載其他網(wǎng)站的首頁,Logo 和視頻都是下載不了的。但是也有解決辦法,那就是另外一個(gè)領(lǐng)域的事情了,以后有機(jī)會(huì)說給大家聽。

          如果這篇文章對(duì)您或者您的朋友有幫助,感謝您關(guān)注,轉(zhuǎn)發(fā)。

          很多網(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)擊下載的功能。

          A 標(biāo)簽的 download 屬性

          download:屬性為 A 標(biāo)簽在 HTML5 中新增加的一個(gè)屬性,它可以強(qiáng)制觸發(fā)瀏覽器的下載操作。

          語法:

          <a href="text.jpg" download="下載后的文件名稱" >點(diǎn)擊我可下載圖片</a>

          例:使用 html A 標(biāo)簽下載圖片

          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ī)定下載文件的名稱。所允許的值沒有限制,

          js + html 實(shí)現(xiàn)下載

          如果不方便使用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>

          download 屬性補(bǔ)充說明

          1、并不是所有的瀏覽器支持此屬性,F(xiàn)irefox 和 Chrome是支持的

          2、Chrome 瀏覽器,在本地測試時(shí)失效

          3、download 屬性,為html5 中新增的屬性


          主站蜘蛛池模板: 国产精品电影一区二区三区| 日韩AV无码一区二区三区不卡| 精品一区二区三区水蜜桃| 无码少妇一区二区| 国产精品 视频一区 二区三区| 日本一道高清一区二区三区| 中文字幕一区在线观看视频 | 亚洲一区二区三区高清在线观看| 日本不卡一区二区三区| 国产主播一区二区| 亚洲AV成人一区二区三区AV| 精品福利一区二区三| 日本一区二区三区精品中文字幕| 国产亚洲一区二区精品| 制服中文字幕一区二区| 久久久精品一区二区三区| 亚洲天堂一区二区| 亚洲午夜一区二区三区| 亚洲日韩精品国产一区二区三区| 天堂一区人妻无码| 波多野结衣一区二区三区高清在线| 日韩一区在线视频| 亚洲一区二区三区乱码A| 亚洲美女视频一区| 中文国产成人精品久久一区| 亚洲视频一区在线观看| 精品无码国产AV一区二区三区| 亚洲性日韩精品国产一区二区| 一区二区三区四区免费视频| 一区二区乱子伦在线播放| 亚洲色精品VR一区区三区| 精品久久久久一区二区三区 | 国产成人久久精品一区二区三区| 国产日韩精品一区二区三区在线| 亚洲熟妇AV一区二区三区浪潮| 天堂不卡一区二区视频在线观看| 亚洲色无码专区一区| 日韩一本之道一区中文字幕| 国产一区二区视频免费| 亚洲视频一区二区三区四区| 国产一区二区三区久久精品|