pom.xml
<!-- 上傳下載 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
spring.xml配置
<!-- 上傳下載 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!--配置上傳文件 -->
<property name="defaultEncoding" value="utf-8" /><!--默認字符編碼 -->
<property name="maxUploadSize" value="10485760000" /><!--上傳文件大小 -->
<property name="maxInMemorySize" value="4096" /><!--內存中的緩存大小 -->
</bean>
文件上傳
- 前端
<form method="post" action="upload.do" enctype="multipart/form-data">
<input type="file" name="fileName" />
</form>
- 後臺
public static String upload(HttpServletRequest request) throws IOException {
//1.轉化request爲:MultipartHttpServletRequest
MultipartHttpServletRequest mhsRequest = (MultipartHttpServletRequest) request;
//2.獲取上傳文件
CommonsMultipartFile cmFile = (CommonsMultipartFile) mhsRequest.getFile("fileName");
//3.獲取上傳文件的字節數組
byte[] fileByte = cmFile.getBytes();
//4.獲取上傳文件名
String oldFileName = cmFile.getOriginalFilename();
//存儲文件的物理路徑
String uploadPath = "C:\\File\\";
String url = uploadPath + oldFileName;
OutputStream os;
os = new FileOutputStream(url);
os.write(fileByte);
os.flush();
os.close();
return url;
}
文件下載
- 前端
將該文件的相關的信息傳遞到後臺即可。
- 後臺
根據前臺的相關信息得到該文件的路徑,傳入路徑參數執行下載方法
public static void download(HttpServletResponse response,String url) {
//截取字符串,獲取文件名
int i = 24;
String filename = url.substring(i);
//獲取輸入流
try {
InputStream bis = new BufferedInputStream(new FileInputStream(new File(url)));
//假如以中文名下載的話,轉碼以免文件名中文亂碼
filename = URLEncoder.encode(filename,"UTF-8");
//設置文件下載頭
response.addHeader("Content-Disposition", "attachment;filename=" + filename);
//設置文件ContentType類型,這樣設置,會自動判斷下載文件類型
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
while((len = bis.read()) != -1) {
out.write(len);
out.flush();
}
out.close();
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}