1. 程式人生 > >springboot 上傳圖片(多張和單張都可以)

springboot 上傳圖片(多張和單張都可以)

@RequestMapping("/upload")
@ResponseBody
public String handleFileUpload(HttpServletRequest request) {
    MultipartHttpServletRequest params = ((MultipartHttpServletRequest) request);
    List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");
    System.out.println("files" + files);
	//接收前端傳過來的欄位
    //String name = params.getParameter("name");
    MultipartFile file = null;
    //先設定一個數組來裝file路徑
    List imgs = new ArrayList();
   //設定圖片路徑
	private final String UPLOAD_FOLDER = "pic/";
    for (int i = 0; i < files.size(); ++i) {
        file = files.get(i);
        if (!file.isEmpty()) {
            try {
                byte[] bytes = file.getBytes();
                // 獲取圖片的檔名
                String fileName = file.getOriginalFilename();
                // 獲取圖片的副檔名
                String extensionName = fileName.substring(fileName.lastIndexOf(".") + 1);
                // 新的圖片檔名 = 獲取時間戳+"."圖片副檔名
                String newFileName = String.valueOf(System.currentTimeMillis()) + "." + extensionName;
                //圖片路徑
                Path path = Paths.get(UPLOAD_FOLDER + newFileName);
				//System.out.println("lj: " + path);
                imgs.add(path);
                //如果沒有files資料夾,則建立
                if (!Files.isWritable(path)) {
                    Files.createDirectories(Paths.get(UPLOAD_FOLDER));
                }
                //檔案寫入指定路徑
                Files.write(path, bytes);
            } catch (Exception e) {
                return "圖片上傳失敗 " + i + " => " + e.getMessage();
            }
        } else {
            return "圖片上傳失敗 " + i + " because the file was empty.";
        }
    }
    return "圖片上傳成功";
}