您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java怎么實現文件上傳的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Controller成通過post
上傳方式定義接口,上傳文件通常使用post
的上傳方式,get
用于獲取數據、文件。 單個入參可以使用@RequestParam
標注,不用封裝到類里邊在使用@RepuestBody
映射
@PostMapping(value = "/uploadFile") @ApiOperation(value = "文件上傳", notes = "文件上傳") public Result uploadFile(@RequestParam (name = "file") MultipartFile file) throws Exception { String url = fileService.uploadFile(file); }
2.1獲取文件的相關信息
獲取文件主要信息的目的是為了保存文件,通常會使用文件信息來作為文件的保存名稱,以下是常用的文件信息獲取
//獲取文件名稱 String originalFilename = file.getOriginalFilename(); // 截取上傳文件的后綴 String uploadFileSuffix = originalFilename.substring(originalFilename.indexOf('.') + 1, originalFilename.length()); //獲取文件父目錄 File Parentlocaltion=localFile.getParentFile(); //獲取文件絕對目錄 File localFileAbsoluteFile=localFile.getAbsoluteFile();
需要獲取項目所在位置,并且把文件保存到項目同一個目錄下。可以用以下方式獲取
String currentDir = System.getProperty("user.dir");
File(String pathname):使用給定的路徑名字符串創建一個文件對象。
File(String parent, String child):使用給定的父目錄路徑名字符串和子目錄名字符串創建一個文件對象。
createNewFile():創建一個新文件。
mkdir():創建一個新目錄。
mkdirs():創建一個新目錄,如果必要的話,還會遞歸地創建父目錄。
delete():刪除文件或目錄。
2.2首先需要知道 JAVA根據file的路徑創建文件夾
下面的代碼將創建一個文件夾,如果文件夾不存在。
mkdirs() 方法將遞歸地創建所有必需的父文件夾。
如果您只需要創建直接的父文件夾,可以使用 mkdir() 方法。
String folderPath = "D:\\uploadFiles\\report\\20230213\\"; File folder = new File(folderPath); if (!folder.exists()) { folder.mkdirs(); }
2.3文件保存到本地:方法一
使用此方法保存必須要絕對路徑且文件夾必須已存在,否則報錯,所以一般會使用mkdirs,判斷文件是否存在后創建文件夾
public String uploadFile(MultipartFile file) throws Exception { File file = new File(fileName); try { //使用此方法保存必須要絕對路徑且文件夾必須已存在,否則報錯 String fileUrl = "D:\\uploadFiles\\report\\" + fileAdd + File.separator + System.currentTimeMillis() + "." + uploadFileSuffix; File localFile = new File(fileUrl); File Parentlocaltion=localFile.getParentFile(); if (!Parentlocaltion.exists()) { //判斷文件父目錄是否存在 Parentlocaltion.mkdirs(); } //FileUtils.copyInputStreamToFile(file.getInputStream(), localFile); file.transferTo(localFile); } catch (IOException e) { e.printStackTrace(); return dealResultMap(false, "上傳失敗"); }*/ return dealResultMap(true, "上傳成功"); }
注意:兩個文件對象,分別表示源文件和目標文件。然后,我們創建了兩個文件通道,并使用 transferTo 方法將源文件通道中的數據傳輸到目標文件通道中。
2.4文件保存到本地:方法二
這個方式就是很普通的流寫入方式,通過文件流讀取文件后,寫入本地磁盤
public String uploadFile(MultipartFile file) throws Exception { String fileName = file.getOriginalFilename(); try { //獲取文件字節數組 byte [] bytes = file.getBytes(); //文件存儲路徑(/fileupload1/ 這樣會在根目錄下創建問價夾) File pfile = new File("/fileupload1/"); //判斷文件夾是否存在 if(!pfile.exists()){ //不存在時,創建文件夾 pfile.mkdirs(); } //創建文件 File file = new File(pfile, fileName); //寫入指定文件夾 OutputStream out = new FileOutputStream(file); out.write(bytes); } catch (IOException e) { e.printStackTrace(); return dealResultMap(false, "上傳失敗"); } return dealResultMap(true, "上傳成功"); }
這種調用方式僅限于只有file一個上傳文件,入參只是file。項目中如果需要多次上傳文件可以進行多次接口調用。
以上就是“Java怎么實現文件上傳”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。