純java檔案上傳下載
阿新 • • 發佈:2019-01-06
第一種:
直接讀取固定路徑下的檔案,上傳到工程下的file檔案。
import ch.qos.logback.core.util.FileUtil; import org.apache.tomcat.util.http.fileupload.FileItem; import org.apache.tomcat.util.http.fileupload.FileUploadException; import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory; import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.util.ResourceUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.*; import java.util.List; @RestController public class UpdateFileController { public static void main(String[] args) { String relativelyPath=System.getProperty("user.dir"); System.out.println("relativelyPath=="+relativelyPath); //需要複製的目標檔案或目標資料夾 String pathname = "C:/Users/duxt/Desktop/11.xls"; File file = new File(pathname); //複製到的位置 String topathname = "./file/"; File toFile = new File(topathname); try { copy(file, toFile); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void copy(File file, File toFile) throws Exception { byte[] b = new byte[1024]; int a; FileInputStream fis; FileOutputStream fos; if (file.isDirectory()) { String filepath = file.getAbsolutePath(); filepath=filepath.replaceAll("\\\\", "/"); String toFilepath = toFile.getAbsolutePath(); toFilepath=toFilepath.replaceAll("\\\\", "/"); int lastIndexOf = filepath.lastIndexOf("/"); toFilepath = toFilepath + filepath.substring(lastIndexOf ,filepath.length()); File copy=new File(toFilepath); //複製資料夾 if (!copy.exists()) { copy.mkdir(); } //遍歷資料夾 for (File f : file.listFiles()) { copy(f, copy); } } else { if (toFile.isDirectory()) { String filepath = file.getAbsolutePath(); filepath=filepath.replaceAll("\\\\", "/"); String toFilepath = toFile.getAbsolutePath(); toFilepath=toFilepath.replaceAll("\\\\", "/"); int lastIndexOf = filepath.lastIndexOf("/"); toFilepath = toFilepath + filepath.substring(lastIndexOf ,filepath.length()); //寫檔案 File newFile = new File(toFilepath); fis = new FileInputStream(file); fos = new FileOutputStream(newFile); while ((a = fis.read(b)) != -1) { fos.write(b, 0, a); } } else { //寫檔案 fis = new FileInputStream(file); fos = new FileOutputStream(toFile); while ((a = fis.read(b)) != -1) { fos.write(b, 0, a); } } } } }
第二種:
有頁面,好除錯版本
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.*; @Controller public class UpdateFileController { /* * 獲取file.html頁面 */ @RequestMapping("file") public String file(){ return "/file"; } /** * 實現檔案上傳 * */ @RequestMapping("fileUpload") @ResponseBody public String fileUpload(@RequestParam("fileName") MultipartFile file){ if(file.isEmpty()){ return "false"; } String fileName = file.getOriginalFilename(); int size = (int) file.getSize(); System.out.println(fileName + "-->" + size); // String path = "D:/" ; String path = "./file/"; File dest = new File(path + "/" + fileName); if(!dest.getParentFile().exists()){ //判斷檔案父目錄是否存在 dest.getParentFile().mkdir(); } try { file.transferTo(dest); //儲存檔案 return "true"; } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); return "false"; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return "false"; } }
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> <head> <meta charset="UTF-8" /> <title>Insert title here</title> </head> <body> <h1 th:inlines="text">檔案上傳</h1> <form action="fileUpload" method="post" enctype="multipart/form-data"> <p>選擇檔案: <input type="file" name="fileName"/></p> <p><input type="submit" value="提交"/></p> </form> </body> </html>