日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

使用SpringMVC模拟文件上传与下载案例

發布時間:2025/3/15 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用SpringMVC模拟文件上传与下载案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文件上傳下載

SpringMVC封裝了Tomcat的上傳文件功能

MultipartResolver接口

  • MultipartResolver接口定義了文件上傳過程中的相關操作,并對通用性操作進行了封裝
  • MultipartResolver接口底層實現類CommonsMultipartResovler
  • CommonsMultipartResovler并未自主實現文件上傳下載對應的功能,而是調用了apache的文件上傳下載組件

pom.xml

<dependencies><!-- servlet3.0規范的坐標 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--jsp坐標--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version><scope>provided</scope></dependency><!--spring的坐標--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.9.RELEASE</version></dependency><!--springmvc的坐標--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.9.RELEASE</version></dependency><!--文件上傳下載--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version></dependency></dependencies><build><!--設置插件--><plugins><!--具體的插件配置--><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>80</port><path>/</path></configuration></plugin></plugins></build>

SpringMVC配置

<mvc:annotation-driven/><context:component-scan base-package="com.itzhuzhu"/><!--配置文件上傳處理器--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!--設置上傳大小--><property name="maxUploadSize" value="1024000000"/></bean>

控制器

@RequestMapping(value = "/fileupload") public void fileupload(MultipartFile file){// transferTo上傳文件用的file.transferTo(new File("file.png")); }

page.jsp

<%@page pageEncoding="UTF-8" language="java" contentType="text/html;UTF-8" %> <h1>測試文件上傳下載功能!</h1>

fileupload.jsp

<%@page pageEncoding="UTF-8" language="java" contentType="text/html;UTF-8" %><form action="/fileupload" method="post" enctype="multipart/form-data"><%--文件上傳表單的name屬性值一定要與controller處理器中方法的參數對應,否則無法實現文件上傳--%>上傳LOGO<input type="file" name="file"/><br/>上傳照片:<input type="file" name="file1"/><br/>上傳任意文件:<input type="file" name="file2"/><br/><input type="submit" value="上傳"/> </form>

文件上傳注意事項

  • 文件命名問題, 獲取上傳文件名,并解析文件名與擴展名
  • 文件名過長問題(可以把用戶上傳的文件名保存到數據庫,用UUID生成一個新的文件名,代替它。)
  • 文件保存路徑
  • 重名問題
  • @RequestMapping(value = "/fileupload") //參數中定義MultipartFile參數,用于接收頁面提交的type=file類型的表單,要求表單名稱與參數名相同 public String fileupload(MultipartFile file,MultipartFile file1,MultipartFile file2, HttpServletRequest request) throws IOException {System.out.println("file upload is running ..."+file);// MultipartFile參數中封裝了上傳的文件的相關信息// System.out.println(file.getSize()); 文件大小// System.out.println(file.getBytes().length); 文件所有的字節都在這個里面// System.out.println(file.getContentType()); 文件的類型// System.out.println(file.getName()); file文件名// System.out.println(file.getOriginalFilename()); 上傳的文件名// System.out.println(file.isEmpty()); 是否為空//首先判斷是否是空文件,也就是存儲空間占用為0的文件if(!file.isEmpty()){//如果大小在范圍要求內正常處理,否則拋出自定義異常告知用戶(未實現)//獲取原始上傳的文件名,可以作為當前文件的真實名稱保存到數據庫中備用String fileName = file.getOriginalFilename();//設置保存的路徑String realPath = request.getServletContext().getRealPath("/images");//保存文件的方法,指定保存的位置和文件名即可,通常文件名使用隨機生成策略產生,避免文件名沖突問題file.transferTo(new File(realPath,file.getOriginalFilename()));}//測試一次性上傳多個文件if(!file1.isEmpty()){String fileName = file1.getOriginalFilename();//可以根據需要,對不同種類的文件做不同的存儲路徑的區分,修改對應的保存位置即可String realPath = request.getServletContext().getRealPath("/images");file1.transferTo(new File(realPath,file1.getOriginalFilename()));}if(!file2.isEmpty()){String fileName = file2.getOriginalFilename();String realPath = request.getServletContext().getRealPath("/images");file2.transferTo(new File(realPath,file2.getOriginalFilename()));}// 重名的問題:不使用用戶上傳的文件名,把上傳的文件名封裝成一個變量,再使用UUID重新賦一個名,這樣用戶的是用戶的,服務器的是服務器的String uuid = UUID.randomUUID().toString().replace("-","").toUpperCase();return "page.jsp"; }

    總結

    以上是生活随笔為你收集整理的使用SpringMVC模拟文件上传与下载案例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。