1. 程式人生 > >基於spring的文件上傳下載

基於spring的文件上傳下載

return col trac javax images package cati 方式 created

技術分享圖片
package com.zsf.util;

import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; public class FileLoadUtil{ /** * 圖片上傳 * @param request * @param file */ public static String upload(HttpServletRequest request, MultipartFile file){ //重新定義文件名防止重名被替換 String fileName = UUIDUtil.createUUID();
//獲取文件上傳的路徑 String path = request.getServletContext().getRealPath("/images"); //如果上傳目錄不存在,則創建出來 File dir = new File(path); if(!dir.exists()){ dir.mkdir(); } //獲取上傳的文件名(也可以自定義) //String fileName = file.getOriginalFilename(); //構建一個完整文件信息(路徑 + 文件名)
File fileMessage = new File(dir.getAbsolutePath() + "/" + fileName); try { //執行上傳,只需要調用transferTo方法即可 file.transferTo(fileMessage); //將文件名放入model中 // model.addAttribute("fileName", fileName); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("上傳圖片失敗"); } return fileName; } /** * 圖片下載 * @param fileName * @param request * @return */ public static ResponseEntity<byte[]> downLoad(String fileName,HttpServletRequest request){ //獲取下載路徑 String path = request.getServletContext().getRealPath("/images"); //構建下載文件 File file = new File(path + "/" + fileName); //創建HttpHeaders設置響應頭信息 HttpHeaders headers = new HttpHeaders(); try { //設置在響應頭中的文件名稱,這裏進行重新編碼,防止中文亂碼 String headerFileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1"); //設置內容以附件的方式下載 headers.setContentDispositionFormData("attachment", headerFileName); //設置相應類型為application/octet-stream headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //創建ResponseEntity對象 ResponseEntity<byte[]> entity = new ResponseEntity<>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED); return entity; } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("文件下載失敗"); } } }
fileLoad

基於spring的文件上傳下載