js和其他後臺語言結合實現附件下載功能
下載功能這個不用多說吧,就算是以前沒有開發過,用過應該是肯定的,如果下載附件這樣的功能都沒有使用過幾乎是難以想象的,下面介紹一下利用java結合javascript實現的附件下載功能,希望能夠給需要的朋友帶來一定的幫助,實現過程如下:
一.java後臺程式碼:
[Java] 純文字檢視 複製程式碼@RequestMapping(value = "download.html", method = RequestMethod.GET) public void download(String resourceid, HttpServletRequest request, HttpServletResponse response) { response.setContentType("charset=UTF-8"); File file = new File(path); response.setHeader("Content-Disposition", "attachment; filename=a"); BufferedInputStream bis = null; BufferedOutputStream bos = null; OutputStream fos = null; InputStream fis = null; try { fis = new FileInputStream(file.getAbsolutePath()); bis = new BufferedInputStream(fis); fos = response.getOutputStream(); bos = new BufferedOutputStream(fos); int bytesRead = 0; byte[] buffer = new byte[5 * 1024]; while ((bytesRead = bis.read(buffer)) != -1) { bos.write(buffer, 0, bytesRead); } bos.flush(); } catch(E e){ } finally { try { bis.close(); bos.close(); fos.close(); fis.close(); } catch (IOExcepti[url=]2[/url]on e) { e.printStackTrace(); } } }
上面是java程式碼部分,當然這裡不是重點,這是後臺程式人員的事情,當然如果前後臺都會那就更好了。
這個時候如果我們再前端要進行附近下載請求這個檔案,伺服器先找出檔案,設定響應頭,然後通過流輸出到瀏覽器端。
瀏覽器在頭中發現該響應的主體是流檔案,則自動會呼叫另存為的視窗,讓使用者儲存下載,實現原理如下:
設定Content-Disposition屬性值,它是MIME協議的擴充套件,用於指示如何讓客戶端顯示附件的檔案,屬性值可以有兩個:
[Java] 純文字檢視 複製程式碼inline //線上開啟 attachment //作為附件下載
在我們的需求中,需要將屬性值設定為attachment。
上面分析的是關於java後臺的相關設定,下面介紹一下js前端的設定。
二.前臺相關程式碼:下面是前端請求的幾種常用方式:
1.form表單方式:
[HTML] 純文字檢視 複製程式碼<form action='download.html' method='post'> <input type='submit'/> </form>
2.iframe方式:
[JavaScript] 純文字檢視 複製程式碼var iframe = "<iframe style='display:none' src='download.html'></iframe>" body.append(iframe);
3.window.open()方式:
[JavaScript] 純文字檢視 複製程式碼window.open("download.html");
相關文章
- WebAssembly 基礎以及結合其他程式語言Web
- 純前端表格控制元件SpreadJS與Java結合,實現模板上傳和下載等功能前端控制元件JSJava
- python實現郵件接收、附件下載Python
- servlet實現下載功能Servlet
- 組合語言-基礎功能組合語言
- 組合語言——更多功能組合語言
- APICloud 實現文件下載和預覽功能APICloud
- js實現的點選前進和後退功能JS
- 後臺商品管理功能實現
- 使用Go語言實現爬蟲功能Go爬蟲
- ASP.NET 多語言的實現(後臺訊息+前臺訊息+頁面自動繫結)ASP.NET
- Java SendEmail實現帶附件的郵件功能JavaAI
- Teamcenter 流程配置實現《部分發布功能附件》
- 自制Monkey語言編譯器:實現函式閉包功能和為語言增加複雜資料結構編譯函式資料結構
- C語言實現連結串列C語言
- Flutter 實現檔案下載功能Flutter
- Java實現檔案下載功能Java
- Django 實現下載檔案功能Django
- C#以及其他語言環境下的堆和棧C#
- 現在 opencv 對其他語言支援如何?OpenCV
- JS實現前臺表格排序功能JS排序
- Highcharts結合後臺實現圖餅資料顯示
- 與其他語言的比較——瞭解ASP、PHP和JSP (轉)PHPJS
- go語言實戰教程之 後臺管理頁面統計功能開發(1)Go
- Vue中結合clipboard實現複製功能Vue
- Unity結合Flask實現排行榜功能UnityFlask
- [TEAP早期試讀]Android開發實現後臺下載Android
- c語言 5.9.2下載C語言
- c 語言實現 tcp/udp 伺服器功能TCPUDP伺服器
- Flask後端開發(二) - 功能實現和專案總結Flask後端
- 《JAVA語言程式設計》pdf 附下載連結Java程式設計
- 結合RxJS + AngularJS實現非同步處理JSAngular非同步
- react 學習--結合bootstrap實現評論功能Reactboot
- 利用輪播原理結合hammer.js實現簡潔的滑屏功能JS
- js下載檔案的實現方式JS
- js實現txt/excel檔案下載JSExcel
- C語言實現雙連結串列的(終端)新增和查詢C語言
- 手寫程式語言-實現運算子過載