檔案上傳--基於Spring MVC框架+SmartUpload
這篇文章是介紹檔案上傳的,由於在spring MVC上實現起來和直接在servlet中寫有些不同,所以特地寫了一下這篇文章,關於不同點,大家可以先閱讀一下上一篇文章。好了,下面直接上程式碼。
jab包是jspSmartUpload.jar,如果有類似的jar包如:commons-fileupload-1.2.2,留一個即可,否則會衝突報錯
首先是一個簡單的頁面(jsp),比較醜,但能用:
效果圖:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="pragma" content="no-cache" /> <base target="_self"> <title>檔案上傳</title> </head> <body> <h5>檔案上傳</h5><hr/> <form id="uploadForm" action="http://localhost:8080/springMVC/fileLoad/upload.do" enctype="multipart/form-data" method="post"> <div><input type="file" size="25" maxlength="80" name="file_upload"/></div> <div><input type="submit" value="上傳"/></div> </form> </body> </html>
然後是controller程式碼,至於為什麼這樣寫,可以參考上一篇文章:
接著是FileLoad類:package module.system.controller; import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import module.system.common.FileLoad; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.context.ServletConfigAware; import org.springframework.web.context.ServletContextAware; /** * 檔案上傳下載. * */ @Controller @RequestMapping("/fileLoad") public class FileLoadController implements ServletConfigAware,ServletContextAware{ private ServletContext servletContext; @Override public void setServletContext(ServletContext arg0) { this.servletContext = arg0; } private ServletConfig servletConfig; @Override public void setServletConfig(ServletConfig arg0) { this.servletConfig = arg0; } @RequestMapping(value = "/upload.do", method = RequestMethod.POST) @ResponseBody //此註解表明返回值跳過檢視處理部分,直接寫入 http response body中 public String upload(HttpServletRequest request,HttpServletResponse response) { FileLoad fileLoad = new FileLoad(); try { fileLoad.upload(request, response,servletConfig); } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } }
測試時寫一個按鈕,點選後彈出上面那個頁面就行。package module.system.common; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.jspsmart.upload.SmartFile; import com.jspsmart.upload.SmartUpload; /** * 檔案上傳下載. * @author nagsh. * */ public class FileLoad{ /** * 檔案上傳. * @param request * @param response * @return * @throws ServletException * @throws IOException */ public String upload(HttpServletRequest request, HttpServletResponse response,ServletConfig config) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); //新建一個SmartUpload物件 SmartUpload mySmartUpload=new SmartUpload(); String fileId = ""; try{ //上傳初始化 mySmartUpload.initialize(config, request, response); //設定每個上傳檔案的最大長度 mySmartUpload.setMaxFileSize(1*512*1024); //設定總上傳資料的長度 mySmartUpload.setTotalMaxFileSize(1*1024*1024); //設定允許上傳的檔案的型別,只允許上傳java,doc,txt檔案 mySmartUpload.setAllowedFilesList("java,doc,txt"); //設定禁止上傳的檔案的型別,禁止上傳帶有exe,bat檔案 mySmartUpload.setDeniedFilesList("exe,bat"); //上傳檔案 mySmartUpload.upload(); //處理每個上傳檔案 for(int i=0;i<mySmartUpload.getFiles().getCount();i++) { SmartFile file=mySmartUpload.getFiles().getFile(i); //判斷使用者是否選擇了檔案 if(!file.isMissing()){ //另存到以Web應用程式的根目錄為檔案根目錄的目錄下 //(宣告一下:在Myeclipse中,該目錄位於工程下的.metadata/.me_tcat/webapps/該工程目錄/upload/) //生成唯一的檔案索引(日期+兩個隨機數) String fileName =file.getFileName(); String data[] = fileName.split("\\."); System.out.println(data.length); String fileType = data[1]; //檔案型別 System.out.println(fileType); Date now = new Date(); DateFormat YMD = new SimpleDateFormat("yyyyMMdd");//年-月-日 String ymd = YMD.format(now);//當前年-月-日 Random random = new Random(); int r1 = random.nextInt(99999); int r2 = random.nextInt(99999); fileId = ymd+r1+""+r2; System.out.println(fileId); file.saveAs("/upload/"+fileId+"."+fileType,mySmartUpload.SAVE_VIRTUAL); } } }catch(Exception e){//異常處理 //列印自定義異常資訊 } return fileId; } public static void main(String[] args) { } }
檔案上傳後的名字是隨機生成的,這塊可以根據實際情況改,程式碼中寫明白了。
還要強調的是我寫的這個例子檔案是上傳到tomcat/webapps/專案/upload下,所以需要先在tomcat下建立一個資料夾。
相關推薦
檔案上傳--基於Spring MVC框架+SmartUpload
這篇文章是介紹檔案上傳的,由於在spring MVC上實現起來和直接在servlet中寫有些不同,所以特地寫了一下這篇文章,關於不同點,大家可以先閱讀一下上一篇文章。好了,下面直接上程式碼。 jab包是jspSmartUpload.jar,如果有類似的jar包如:commo
檔案上傳和下載(三)--【SmartUpload】
一、簡介 SmartUpload一種java上傳元件包,可以輕鬆的實現檔案的上傳及下載功能。 使用該元件可以輕鬆的實現上傳檔案的限制,也可以輕易的取得檔案上傳的名稱、字尾、大小等。 三、具體實現例子【jsp+SmartUpload】 專案目錄 web.xml配置
struts2檔案上傳修改為cos框架處理一系列事情
前段時間Struts2出來一個編號CVE-2017-5638的漏洞,影響系統及版本:Struts 2.3.5 - Struts 2.3.31、Struts 2.5 - Struts 2.5.10! 專案經理簡單修復了一下,他直接在配置檔案中新增了這麼個屬性! 屬性如下:
基於Spring MVC框架的Http流程分析
一、問題提出 我們可以方便的利用Spring MVC進行業務開發,請求的大部分工作都被框架和容器封裝,使得我們只需要做很少量的
轉:關於我使用spring mvc框架做檔案上傳時遇到的問題
昨天嘗試著用spring mvc框架做檔案上傳,犯了挺多不該犯的毛病 問題1: org.springframework.web.util.NestedServletException: Request processing failed; nested exception
在Spring MVC框架下利用Servlet3.0 API實現檔案上傳
Servlet3.0提供了對檔案上傳的原生支援,不需藉助任何第三方元件,直接使用Servlet3.0提供的API就能夠實現檔案上傳功能。本文使用IDEA IDE工具,在Spring MVC框架下,基於註解對映和資料繫結編寫Java業務程式碼,利用Servlet3
Spring MVC - MultipartFile實現檔案上傳(單檔案與多檔案上傳)
前提:引入jar包。 <dependency>
Spring MVC實現MultipartFile檔案上傳功能
前端 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>修改資訊</title> </head> <body
Spring MVC(四)檔案上傳
檔案上傳步驟 1.寫一個檔案上傳的頁面 2.寫一個檔案上傳的控制器 注意: 1.method="post" 2.enctype="multipart/form-data" 3.檔案型別上傳元件 type="file" 4.接收檔案引數需要使用MultipartFile 型別的引數
Spring mvc uploadifive 檔案上傳實踐(轉自 https //segmentfault com/a/
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Java-Spring框架實現簡單的檔案上傳(圖片為例)
一、開發環境搭建 下載相應的jar包: 1.commons-fileupload 2.commons-io web.xml 檔案配置: <servlet> &
Java架構-Spring mvc+oss儲存+fileupload多檔案上傳實現SSO單點登入模板管理
之前給大家介紹了sso的相關知識點和整合方案,考慮到每個系統所屬行業的不同,這邊針對於不同行業做了一些統一的sso單點登入介面模板,使用fileupload多檔案上傳+OSS阿里雲端儲存方案。 1. 阿里雲oss儲存Utils Java程式碼 2. 阿里雲配
Spring MVC中檔案上傳和下載
檔案上傳 檔案上傳需將表格的提交方式設為"POST",並且將enctype設為"multipart/form-data",以二進位制的方式提交資料。 spring mvc中可通過MultipartResolver監聽每個請求,如有上傳的檔案,則把請求封裝為MultipartH
Spring MVC 檔案上傳工具類
public class UploadFiles { /** * 檔案的名稱 */ private String name; /** * 檔案的新的名稱 */ private String uuidname; /**
Spring MVC實現多檔案上傳
1、修改POJO和DAO實現類 public class User{ //......其他屬性省略 private String idPicPath;//證件照路徑 private String workPicPath;//工作證照片路徑
spring mvc的檔案上傳操作
第一步:在springmvc中配置multipart型別解析器 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver
Spring MVC 的檔案上傳和下載
“君看一葉舟,出沒風波里” 使用Spring MVC 進行檔案的上傳和下載,除了Spring MVC 的jar包之外,還需用到commons-fileupload-1.2.2.jar、commons-io-2.1.jar兩個包。這裡已給出下載地址:jar包下載地
spring mvc 實現檔案上傳
html內容:<input type="file" multiple="multiple" id="file_upload" name="file_upload" /> 其中 multiple表示支援多檔案上傳<button id='upload'>上
spring mvc 檔案上傳並攜帶其他引數
這是主要使用到的jar 檔案是:spring mvc +apache common-fileuplad 第一步:web.xml 檔案。【重點是spring mvc的攔截器和相關監聽器】 <?xml version="1.0" encoding="UTF-8"?&g
基於tobato的fastdfs與spring boot整合實現檔案上傳和下載
專案結構: pom.xml檔案新增配置: <!-- fastdfs --> <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastd