1. 程式人生 > >文件下載

文件下載

addheader oid 啟動 類型 sca 一個 只需要 max tco

pom.xml的maven:

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.9.RELEASE</version> </dependency>

<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency>

<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency>

web.xml配置:


<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>


<!-- 配置DispatcherServlet的初始化參數:設置文件的路徑和文件名稱 -->
<init-param>

<param-name>contextConfigLocation</param-name>

<!-- classPath是字節碼文件的根目錄,這個目錄 與java文件目錄相對應, 這個目錄只需要在java代碼的根目錄創建xml文件,編譯之後再classes文件夾下會出現對應的xml文件, 這個根目錄分兩種情況 -->
<param-value>classPath:springmvc.xml</param-value>

</init-param>

<!--優先級,服務器啟動便加載servlet -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<!-- /不包括jsp -->
<url-pattern>/</url-pattern>
</servlet-mapping>

springmvc.xml配置:

<!-- 設置掃描組件的包: --> <context:component-scan base-package="com.qianfeng"/>

<!-- 配置映射解析器:如何將控制器返回的結果字符串,轉換為一個物理的視圖文件--> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 前綴 ,指定jsp資源存放的位置 --> <property name="prefix" value="/WEB-INF/views/"/>

<!-- 後綴,所有jsp文件的結尾 --> <property name="suffix" value=".jsp"/> </bean>

<!--聲明當前的項目要用到文件上傳的功能 --> <!-- id的值必須是 --> <!-- 配置文件上傳解析器multipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 設置編碼,要與前端頁面同意,一般情況下都是utf-8 --> <property name="defaultEncoding" value="UTF-8"></property> <property name="maxUploadSize" value="10240000"></property> <!-- 上傳最大限制 --> </bean>

<!-- 以上標簽表示文件上傳功能開始啟動 -->

java代碼:

@RequestMapping("download")
public void load(HttpServletResponse resp,
HttpServletRequest req){
//核心思想,把服務器上的文件轉成流輸出到客戶端
//需要response對象
//需要向客戶端輸出流的對象


//通過io操作獲取服務器的文件
String path=req.getServletContext().getRealPath("/load/5.bmp");
File file=new File(path);

//設置contentype,告訴瀏覽器返回的數據格式(是文件還是圖片) aplication/octet-stream是通用類型
resp.setContentType("aplication/octet-stream");
System.out.println(file.getName());

//響應也有請求體,請求頭,請求行
//content-Disposition 表示向客戶端描述附加信息
//attachment表示以附件的形式進行下載
resp.addHeader("content-Disposition","attachment;fileName="+file.getName());

try {
ServletOutputStream outputStream=resp.getOutputStream();
InputStream inputStream=new FileInputStream(file);

//轉成byte數組
byte[] b=IOUtils.toByteArray(inputStream);

//以byte數組的形式進行輸出
outputStream.write(b);

//流操作完須關閉
inputStream.close();
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}


文件下載