SpringBoot進階之檔案上傳(單檔案上傳/多檔案上傳)
1.單檔案上傳
private String uploadPath="D:\\tomcat\\apache-tomcat-7.0.81-windows-x64\\apache-tomcat-7.0.81\\webapps\\img\\"; private String URL="http://127.0.0.1:8880/img/"; /** * 單個檔案上傳 檔案上傳成功後返回檔案的訪問路徑 * @param file * @return */ @ResponseBody @RequestMapping(value = "/upload",method = RequestMethod.POST) public Msg upload(@RequestParam("file")MultipartFile file) { if(!file.isEmpty()) { File fil=new File(uploadPath+file.getOriginalFilename()); try { BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(fil)); out.write(file.getBytes()); out.flush(); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); return ResultUtil.error(200, "檔案上傳失敗{}" + e.getMessage()); } catch (IOException e) { e.printStackTrace(); return ResultUtil.error(200, "檔案上傳失敗{}" + e.getMessage()); } return ResultUtil.success(URL+fil.getName()); //返回上傳檔案的訪問路徑 getAbsolutePath()返回檔案上傳的絕對路徑 }else { return ResultUtil.error(201, "檔案上傳失敗,檔案為空"); } }
postman請求效果圖:
private String uploadPath="D:\\tomcat\\apache-tomcat-7.0.81-windows-x64\\apache-tomcat-7.0.81\\webapps\\img\\"; private String URL="http://127.0.0.1:8880/img/"; /** * 多檔案上傳 並返回各個檔案的訪問路徑 * @param files * @return */ @ResponseBody @RequestMapping(value = "/upload/batch", method = RequestMethod.POST) public Msg batchUpload(@RequestParam("files")MultipartFile[] files) { String uploadedFileName = Arrays.stream(files).map(x -> x.getOriginalFilename()) .filter(x -> !StringUtils.isEmpty(x)).collect(Collectors.joining(" , ")); if (StringUtils.isEmpty(uploadedFileName)) { return ResultUtil.error(201,"檔案上傳失敗,檔案為空"); } List<String> path=new ArrayList<>(); try { path= saveUploadedFiles(Arrays.asList(files)); } catch (IOException e) { return ResultUtil.error(201,"檔案上傳異常"+e.getMessage()); } return ResultUtil.success(path); } private List<String> saveUploadedFiles(List<MultipartFile> files) throws IOException { List<String> paths=new ArrayList<>(); for (MultipartFile file : files) { if (file.isEmpty()) { continue; } byte[] bytes = file.getBytes(); Path path = Paths.get(uploadPath + file.getOriginalFilename()); paths.add(URL + file.getOriginalFilename()); //儲存上傳檔案的訪問路徑 Files.write(path, bytes); } return paths; }
請求效果圖:
Java 8 中的 Stream API 詳解:Stream詳解
相關推薦
SpringBoot進階之統一異常處理(含原始碼)
淺談異常處理 在J2EE專案的開發中,不管是對底層的資料庫操作過程,還是業務層的處理過程,還是控制層的處理過程,都不可避免會遇到各種可預知的、不可預知的異常需要處理。每個過程都單獨處理異常,系統的程式碼耦合度高,工作量大且不好統一,維護的工作量也很大。
SpringBoot進階之檔案上傳(單檔案上傳/多檔案上傳)
1.單檔案上傳 private String uploadPath="D:\\tomcat\\apache-tomcat-7.0.81-windows-x64\\apache-tomcat-7
SpringBoot進階之web進階2~使用AOP處理請求(日誌)
作為Spring兩大核心原理AOP和IOC,什麼是AOP? eg:下雨了我打開了傘,java和c程式設計師程式設計的區別 AOP利用的是橫切的技術,將面向物件構建的龐大的類的體系進行水平的切割,並且會將影響到多個類的公共行為封
SpringBoot進階之訪問資料庫(含原始碼)
本文介紹在Spring Boot基礎下配置資料來源和通過JdbcTemplate編寫資料訪問的示例。 簡單介紹一下 @Controller:修飾class,用來建立處理http請求的物件 @RestController:Spring4之後加入的註解,原來在
SpringBoot進階之web進階3~統一異常處理
規定返回結果Result類 我們為了解決邏輯在一個地方處理,另一個地方不需要再接收它返回的資訊,所以我們引入了異常。預設的Exception只接受message的欄位,但我們通常還有code, 所以自定義一個Exception如下:
SpringBoot進階之Web進階
一.表單驗證 1.為要校驗的物件新增對應的校驗註解 使用@Min(value=18,message="未成年少女金之入內")標記對應類中的屬性。註解表示age最小值為18,錯誤提示為:未成年少女禁止入內 Girl類例項程式碼 package com.st
webpack進階之路三、(實戰一,使用ES6、ts、Flow、SCSS)
一、使用新語言來開發專案 1、使用ES6語言 通常我們需要將採用ES6編寫的程式碼轉換成目前已經支援良好的ES5程式碼,包含如下: 將新的ES6語法用ES5實現,例如ES6的class語法用ES5的prototype實現; 為新的API注入polyfill,例
SpringBoot進階之AOP統一處理http請求日誌
相關注解 1、@Aspect 放在類上面,把該類作為一個切面 2、@Pointcut 放在方法上面,定義一個可被別的方法引用的切入點表示式 3、@Before 放在方法上面,前置通知 方法執行前執行 4、@After 放在方法上面 後置最終通知
SpringBoot進階之JPA實現分頁、排序
---------------repository類程式碼------------ public interface GirlRepository extends JpaRepository<G
Android進階之自定義View(1)實現可換行的TextView
今天來一起學習一下最簡單的自定義view,自己動手寫一個MyTextView,當然不會像系統的TextView那麼複雜,只是實現一下TextView的簡單功能,包括分行顯示及自定義屬性的處理,主要目的是介紹自定義view的實現的基本思路和需要掌握的一些基礎知
webpack進階之路二、(配置)
Entry:配置模組的入口。 Output:配置如何輸出最終想要的程式碼。 Module:配置處理模組的規則。 Resolve:配置尋找模組的規則。 Plugins:配置擴充套件外掛 DevServer:配置DevServer。 其他配置項:其他零散的配置項。
SpringBoot進階之單元測試
1.測試方法 service程式碼 public Girl findOne(Integer id){ return girlRepository.findOne(id); //通過id查詢使用者資訊 } serviceTest程式碼 @RunWith(Sprin
資料結構-單鏈表進階之快慢指標原理(快速查詢法)
面試題:快速找到未知長度單鏈表的中間節點?這個問題的解決方法分為普通方法和高階方法。1.普通方法即我們大家都能一下子想到的,首先遍歷一遍獲取總長度L,然後再次遍歷迴圈至L/2即可;時間複雜度為:O(L+L/2)=O(3/2L)程式碼簡單實現:typedef struct {
SpringBoot進階教程(六十一)intellij idea project下建多個module搭建架構(下)
在上一篇文章《SpringBoot進階教程(六十)intellij idea project下建多個module(上)》中,我們已經介紹了在intellij idea中建立project之後再分化多個module,今天再大致介紹介紹各個module之間詳細工作的細分。 如果是不考慮細分多個module
Java進階學習第十三天(檔案上傳與下載、JavaMail郵件開發)
一、檔案上傳與下載 1、檔案上傳 案例:登錄檔單/儲存商品等相關模組! 頭像 / 商品圖片(資料庫:儲存圖片路徑 / 圖片儲存到伺服器中指定的目錄) 2、檔案上傳要點 ① 表單提交方式:post ② 表單中有檔案上傳的表單項: <input type=”file” />
Java學習之路史上吐血整理Java技術書從入門到進階最全50+本(書籍推薦珍藏版)
前言: 技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。 對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的地方做個記
性能測試七:jmeter進階之文件上傳下載、定時器
同步 ner 功能 get 普通 web-inf bubuko 限制 tomcat-7 一、上傳下載 上傳: 1,POST請求,勾選 use …for post 2,同請求一起發送文件裏,填寫文件名稱,參數名稱 3,MIME類型: application/octet-str
Hadoop進階之路(3)——Hadoop檔案系統
Hadoop有一個抽象的檔案系統概念,HDFS只是其中的一個實現。Java抽象類org.apache.hadoop.fs.FileSystem定義了Hadoop中的一個檔案系統介面,並且該抽象類有幾個具體實現。 Hadoop檔案系統 檔案系統 URI方案 Ja
Esp8266進階之路17 esp8266自研的快速上電開關五次 (開-關為一次) ,無需按鍵觸發則8266進去一鍵配網模式。(附帶Demo)
本系列部落格學習由非官方人員 半顆心臟 潛心所力所寫,僅僅做個人技術交流分享,不做任何商業用途。如有不對之處,請留言,本人及時更改。 很多人怎麼聯絡我一起學習進步,下面打個小小公告:
Python進階之爬蟲url去重(可用於檔案去重)
主要介紹幾個常用和目前瞭解的,當然還有其他方法,這裡只說目前本人自己能實現的幾種方法的基本思想:基於Hash演算法的儲存。對每一個給定的URL,都是用一個已經建立好的Hash函式,對映到某個實體地址上。當需要進行檢測URL是否重複的時候,只需要將這個URL進行Hash對映,如