摘要:在這篇博客中,我們將展示如何在中實現文件的下載功能。本次建立的項目的主要功能為文件下載,而且這也是唯一功能,當然,作為例子,要盡可能簡單,所以,功能簡化為只下載盤目錄下的某一個文件。
??在這篇博客中,我們將展示如何在Spring Boot中實現文件的下載功能。
??還是遵循筆者寫博客的一貫風格,簡單又不失詳細,實用又能讓你學會。
??本次建立的Spring Boot項目的主要功能為文件下載,而且這也是唯一功能,當然,作為例子,要盡可能簡單,所以,功能簡化為只下載E盤music_eg目錄下的某一個文件。
??該Spring Boot項目的名稱為file_download,其具體結構如下:
build.gradle文件的代碼如下:
buildscript { ext { springBootVersion = "2.0.3.RELEASE" } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: "java" apply plugin: "eclipse" apply plugin: "org.springframework.boot" apply plugin: "io.spring.dependency-management" group = "com.example" version = "0.0.1-SNAPSHOT" sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile("org.springframework.boot:spring-boot-starter-test") }
我們只需要創建一個控制器(Controler)文件,即Controller目錄下的File_Download.java,其完整目錄如下:
package com.example.file_download.Controller; import java.io.*; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class File_Download { //實現Spring Boot 的文件下載功能,映射網址為/download @RequestMapping("/download") public String downloadFile(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException { // 獲取指定目錄下的第一個文件 File scFileDir = new File("E://music_eg"); File TrxFiles[] = scFileDir.listFiles(); System.out.println(TrxFiles[0]); String fileName = TrxFiles[0].getName(); //下載的文件名 // 如果文件名不為空,則進行下載 if (fileName != null) { //設置文件路徑 String realPath = "E://music_eg/"; File file = new File(realPath, fileName); // 如果文件名存在,則進行下載 if (file.exists()) { // 配置文件下載 response.setHeader("content-type", "application/octet-stream"); response.setContentType("application/octet-stream"); // 下載文件能正常顯示中文 response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); // 實現文件下載 byte[] buffer = new byte[1024]; FileInputStream fis = null; BufferedInputStream bis = null; try { fis = new FileInputStream(file); bis = new BufferedInputStream(fis); OutputStream os = response.getOutputStream(); int i = bis.read(buffer); while (i != -1) { os.write(buffer, 0, i); i = bis.read(buffer); } System.out.println("Download the song successfully!"); } catch (Exception e) { System.out.println("Download the song failed!"); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } } return null; } }
這樣我們就完成了Spring Boot的文件下載功能。什么?這樣就搞定了?是的,就是這么簡單,因為只實現了文件下載功能。具體的代碼留給讀者好好分析哦~~
??寫完代碼并不是我們的最終目的,我們還差最后一步,那就是測試!測試,真的相當重要啊~
??運行Spring Boot項目后,在瀏覽器中輸入:http://localhost:8080/download , 你會發現什么?那就是你的瀏覽器已經開始下載E盤music_eg目錄下的某一個文件啦(前提是E盤中存在music_eg目錄,當然里面還得有文件,本例僅作為測試),如下圖所示:
??我們再去查看E盤music_eg目錄,如下:
??So, 用Spring Boot實現文件下載功能搞定!歡迎大家交流哦~
注意:本人現已開通兩個微信公眾號: 因為Python(微信號為:python_math)以及輕松學會Python爬蟲(微信號為:easy_web_scrape), 歡迎大家關注哦~~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71503.html
摘要:編寫一個接口創建命名為根據實際情況修改創建類,內容如下啟動主程序,使用等工具發起請求,可以看到頁面返回編寫單元測試用例打開的下的測試入口類。 簡介 在您第1次接觸和學習Spring框架的時候,是否因為其繁雜的配置而退卻了?在你第n次使用Spring框架的時候,是否覺得一堆反復黏貼的配置有一些厭煩?那么您就不妨來試試使用Spring Boot來讓你更易上手,更簡單快捷地構建Spring應...
摘要:哪吒社區技能樹打卡打卡貼函數式接口簡介領域優質創作者哪吒公眾號作者架構師奮斗者掃描主頁左側二維碼,加入群聊,一起學習一起進步歡迎點贊收藏留言前情提要無意間聽到領導們的談話,現在公司的現狀是碼農太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區Java技能樹打卡?【打卡貼 day2...
摘要:響應式編程是基于異步和事件驅動的非阻塞程序,只是垂直通過在內啟動少量線程擴展,而不是水平通過集群擴展。三特性常用的生產的特性如下響應式編程模型適用性內嵌容器組件還有對日志消息測試及擴展等支持。 摘要: 原創出處 https://www.bysocket.com 「公眾號:泥瓦匠BYSocket 」歡迎關注和轉載,保留摘要,謝謝! 02:WebFlux 快速入門實踐 文章工程: JDK...
摘要:歷史文章如何在安裝最新版安裝安裝最新版的入門教程教程內容備注本系列開發工具均為構建項目,選擇后面發現其實沒有用到三個基本的依賴。 本博客 貓叔的博客,轉載請申明出處本系列教程為HMStrange項目附帶。 歷史文章 如何在VMware12安裝Centos7.6最新版 Centos7.6安裝Java8 Centos7.6安裝MySQL+Redis(最新版) SpringBoot+My...
閱讀 2734·2021-09-02 15:11
閱讀 906·2019-08-26 18:18
閱讀 1867·2019-08-26 11:57
閱讀 3317·2019-08-23 16:59
閱讀 1994·2019-08-23 16:51
閱讀 2306·2019-08-23 16:11
閱讀 3120·2019-08-23 14:58
閱讀 1107·2019-08-23 11:34