SpringMVC檔案上傳與下載(附工程原始碼)
1 實現步驟
1.1 引入核心JAR包
SpringMVC實現檔案上傳,需要再新增兩個jar包。一個是檔案上傳的jar包,一個是其所依賴的IO包。這兩個jar包,均在Spring支援庫的org.apache.commons中。
1.2 書寫控制器方法
FileUpController.java 完整
@Controller
public class FileUpController {
@RequestMapping("/")
public String index() {
return "index";
}
@RequestMapping(value="upload",method=RequestMethod.POST)
public String upload(MultipartFile myFile,Model model,HttpServletRequest request) {
//獲取上傳圖片儲存目錄
String path = request.getSession().getServletContext().getRealPath("upload");
System.out.println(path);
//獲取檔名並使用UUID生成新檔名
String fileName = myFile.getOriginalFilename();
String newFileName = UUID.randomUUID()+fileName.substring(fileName.lastIndexOf("."));
//在指定上傳儲存目錄中建立新檔案
File targetFile = new File(path,newFileName);
//找不到指定上傳圖片儲存目錄,就新建立此目錄
if(!targetFile.exists()) {
targetFile.mkdirs();
}
//將檔案寫入硬碟
try {
myFile.transferTo(targetFile);
} catch (IllegalStateException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//將上傳後的檔案路徑傳到view
model.addAttribute("fileUrl", request.getContextPath()+"/upload"+newFileName);
return "upload";
}
}
applicationContext.xml:
注:必須建立MultipartFile例項。要不出現500錯誤
index.jsp頁面:需指定 enctype="multipart/form-data
<body>
<form action="${pageContext.request.contextPath }/first.do" method="post" enctype="multipart/form-data">
<h2>檔案上傳</h2>
檔案:<input type="file" name="uploadFile"/><br/><br/>
<input type="submit" value="上傳"/>
</form>
</body>
實現效果:
2 沒有選擇要上傳的檔案&&限制檔案上傳型別
如果沒有選擇要上傳的檔案,可以通過如下判斷程式碼回到錯誤頁,並配置異常類
<!-- 配置異常類 報錯 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="/error.jsp"></property>
</bean>
3 多檔案上傳
實現效果:
4 檔案下載
<a href="${pageContext.request.contextPath }/download.do?line.jpg">下載</a>
DownloadControll.java 完整
@Controller
public class DownloadController {
@RequestMapping(value="download",method=RequestMethod.GET)
public ResponseEntity<byte[]> download(String filename,HttpServletRequest request)throws Exception {
//下載檔案路徑
String path = request.getServletContext().getRealPath("upload");
File file = new File(path + "/" + filename);
//開始設定http請求頭
HttpHeaders headers = new HttpHeaders();
//下載顯示的檔名,解決中文名稱亂碼問題
String downloadFileName = new String(filename.getBytes("UTF-8"),"ISO-8859-1");
//通知瀏覽器以attachment(下載方式)開啟檔案。
headers.setContentDispositionFormData("attachment", downloadFileName);
//設定mime:application/octet-stream : 二進位制流資料(最常見的檔案下載)。
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(
FileUtils.readFileToByteArray(file), //把一個檔案轉換成位元組陣列返回
headers, //http請求頭
HttpStatus.OK //200
);
}
}
實現效果:
專案原始碼下載--->>工程原始碼下載
相關文章
- JavaWeb之實現檔案上傳與下載原始碼JavaWeb原始碼
- SpringMVC檔案上傳下載(單檔案、多檔案)SpringMVC
- 檔案上傳與下載
- SpringMVC中的檔案上傳和下載SpringMVC
- SpringMVC實現檔案上傳&下載(2)SpringMVC
- SpringMVC實現多檔案上傳原始碼SpringMVC原始碼
- SpringMVC 單檔案上傳與多檔案上傳SpringMVC
- 檔案的上傳與下載
- 一文讀懂SpringMVC中的檔案上傳與下載SpringMVC
- asp.net 檔案上傳和下載管理原始碼ASP.NET原始碼
- minio檔案上傳與下載
- 【SpringMVC】檔案上傳與下載、攔截器、異常處理器SpringMVC
- 檔案上傳下載
- Spring Boot 檔案上傳與下載Spring Boot
- (iPhone/iPad)檔案上傳與下載iPhoneiPad
- SpringMvc檔案上傳SpringMVC
- 檔案上傳/下載後臺程式碼
- struts2 檔案上傳和下載,以及部分原始碼解析原始碼
- JAVA檔案上傳下載Java
- Vertx 檔案上傳下載
- centos上傳下載檔案CentOS
- SpringMVC之檔案上傳SpringMVC
- 精講RestTemplate第6篇-檔案上傳下載與大檔案流式下載REST
- SpringMVC檔案下載SpringMVC
- 【springmvc】下載檔案SpringMVC
- 檔案上傳和下載功能
- 使用SecureCRT上傳下載檔案Securecrt
- java上傳檔案跟批量下載檔案Java
- vue實現Excel檔案的上傳與下載VueExcel
- JavaWeb之實現檔案上傳與下載工具JavaWeb
- JavaWeb之實現檔案上傳與下載元件JavaWeb元件
- JavaWeb之實現檔案上傳與下載示例JavaWeb
- 檔案上傳與下載(免去重學煩惱)
- springmvc實現檔案上傳SpringMVC
- JavaWeb之SpringMVC上傳檔案JavaWebSpringMVC
- Jsp+Servlet實現檔案上傳下載(一)--檔案上傳JSServlet
- springboot 檔案上傳下載Spring Boot
- 檔案上傳下載小工具