當前位置:首頁 » 文件管理 » springmvc上傳多個文件

springmvc上傳多個文件

發布時間: 2023-04-08 21:58:03

『壹』 Spring Mvc 怎麼上傳超過全局配置的文件

springMVC是一個非常方便的web層框架,我們使用它的文件上傳也非常的方便。
我們通過下面的配置來使用springMVC文件上傳功能。
<bean id="multipartResolver" class="com.youth.controller.fileupload.MultipartListenerResolver">
<!-- 設置上傳文件的最大尺寸為10M -->
<property name="maxUploadSize" value="10240"/>
<property name="maxInMemorySize" value="4096"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="resolveLazily" value="true"/> </bean>

Controller層我們這樣接收文件
@RequestMapping("fileUpload")public void fileUpload(@RequestParam("myFile") MultipartFile multipartFile) throws Exception{
String fileName = multipartFile.getOriginalFilename();
File f = createFile(fileName);
multipartFile.transferTo(f);
}

頁面上記得指定enctype屬性哦
<form method="post" enctype="multipart/form-data"></form>

如果你的springMVC配置是正確的,那麼到此springMVC的文件上傳功能已經可以用了。一切都很完美。
由於我們配置了maxUploadSize屬性,那麼如果我們的文件超過了10M會出現什麼情況呢?
理論上系統會拋出異常,那麼如何處理呢?
springMVC異常處理的配置方式如下:
<bean class="org.springframework.web.servlet.handler.">
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">redirect:/error.jsp</prop>
<prop key="org.springframework.web.multipart.">redirect:/MaxUploadSizeError.jsp</prop>
</props> </property><property name="defaultErrorView" value="redirect:/error.jsp"></property> <property name="defaultStatusCode" value="500"></property></bean>

上面的配置作用是如果系統拋出異常,系統跳轉到MaxUploadSizeError.jsp頁面給用戶以提示。
如果是其他Exception異常,則跳轉到error.jsp頁面。
接下來我們測試一下上面的異常處理是否生效了。
在你的代碼任意地方試著拋出NullPointException異常,發現頁面的確能跳轉到error.jsp,證明我們的異常處理是生效的。
然後我們上傳一個10M以上的文件,我們發現後台控制台拋出了異常,我們期待著頁面轉向到MaxUploadSizeError.jsp。

『貳』 spring mvc多文件上傳時報錯怎麼辦

1、確拍早認

;x0dx0a2、確認commons-fileupload.jar 和 org.springframework.web.jar 存在環境x0dx0a3、MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;x0dx0a這一句會報頌賀腔錯:ApplicationHttpRequest cannot be cast to 野衫解決辦法是通過這種方式:x0dx0aMultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());x0d multipartRequest = resolver.resolveMultipart(request);

『叄』 SpringMVC表單提交時,多文件上傳和單個文件上傳有些什麼區別

上傳這樣的功能本來就應該獨立出來,為以後能夠更好的擴展和組件重用做准備。至於你的這個問題也很容易處理,問題的關鍵不在於後台處理的程序如何安排,而在於頁面的表現形式,因為程序本身既然獨立出來了,你的ACTION也是獨立出來的,那麼就把頁面里的上傳功能獨立出來。
舉例來說:
在你的表單里添加一個上傳按鈕,點擊後彈出一個漂浮的div圖層,然後在這個圖層里可以放置單個的文件瀏覽按鈕,或者動態的增加多個需要上傳的瀏覽按鈕,都是很靈活的,然後把這個圖層使用單獨的form標簽包圍起來就可以了。
類似的功能像很多論壇程序都在使用,比較成熟的js組件也可以實現,比如ExtJs、jQuery等等,一般來說能夠提供web editor功能的js組件對於上傳都是類似的處理方式。

『肆』 spring mvc多文件上傳時報錯怎麼辦

1、確認雀旁<form name="contractForm" id="contractForm" action="" method="post" enctype ="multipart/form-data">;罩歲帆
2、確認commons-fileupload.jar 和 org.springframework.web.jar 存在環境
3、MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
這一句會報錯:ApplicationHttpRequest cannot be cast to MultipartHttpServletRequest
解決辦法是通過這種方式物雹:
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);

『伍』 spring mvc 實現多個文件上傳 List<MultipartFile> files = request.getFiles("file"); 報錯

CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//判斷request是否有文件需要上傳
if (multipartResolver.isMultipart(request)) {
//轉換成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
//讀取文件
List<MultipartFile> file = multiRequest.getFiles("file");

『陸』 springmvc 多文件上傳 MultipartFile 怎麼獲取前台傳過來的參數

用@ResponseBody
@RequestMapping(value = "/address", method = RequestMethod.POST)

@ResponseBody
public Map<String, Object> addressPOST() {
Map<岩型String, Object> map = new HashMap<>();
ReceivedGoodsAddress receivedgoodsaddress=new ReceivedGoodsAddress();
List<ReceivedGoodsAddress> list = addressService.findReceivedGoodsAddress(receivedgoodsaddress);
map.clear();
map.put("list", list);
return map;
}
//前台用沖仿jquery+ajax
$.ajax({
type:'POST',
url:'${contextPath}/address',
dataType:'散棗纖json',
success:function(data){
$.each(data.list,function(i,item){
alert(i);
alert(item.id);
alert(item.name);
});
}
});

『柒』 springmvc文件上傳路徑設置

springmvc文件上傳路徑設置:
1、導入文件上傳的坐標。
2、在spring-mvc.xml配置文件中配置文件解析器對象,property可以配置上傳文件的大小等屬性。注意蘆鬧:id一定要是multipartResolver。
3、前鏈猜端頁面的form表單,method是post方法,加上enctype="multipart/form-data"這個屬性。
4、後端方法的參數類型為MultipartFile,參陪喚罩數名要與前端文件域的name一樣。
5、最後用file參數的getOriginalFilename()方法獲取上傳的文件名,然後再用transferTo(參數1,參數2)方法將文件上傳到指定路徑。註:transferTo(參數1,參數2)的參數1為指定將文件上傳的路徑,參數2為文件名。

『捌』 java springmvc 大文件分片上傳處理

*/@ApiModel("大文件分片入參實體")public class MultipartFileParam {
@ApiModelProperty("文件傳輸任務ID") private String taskId;
@ApiModelProperty("當前為第幾分片") private int chunk;
@ApiModelProperty("每個分塊的大小") private long size;

@ApiModelProperty("分片總數") private int chunkTotal;
@ApiModelProperty("主體類型--這個欄位是我項目中的其他業務邏輯可以忽略") private int objectType;
@ApiModelProperty("分塊文件傳輸對象") private MultipartFile file;

『玖』 Springmvc的幾種多附件上傳方式

1.單文件上傳

1.1、頁面

文件上傳需要將表單的提交方法設置為post,將enctype的值設置為」multipart/form-data」。

<form action="${pageContext.request.contextPath}/test/upload.do" method="post" enctype="multipart/form-data">
<input type="file" name="img"><br />
<input type="submit" name="提交">
</form>
1.2 控制器
@Controller
@RequestMapping("/test")
public class MyController {

@RequestMapping(value = "/upload.do", method = RequestMethod.POST)
// 這里的MultipartFile對象變數名跟表單中的file類型的input標簽的name相同,
//所以框架會自動用MultipartFile對象來接收上傳過來的文件,
//當然也可以使用@RequestParam("img")指定其對應的參數名稱
public String upload(MultipartFile img, HttpSession session)
throws Exception {
// 如果沒有文件上傳,MultipartFile也不會為null,可以通過調用getSize()方法獲取文件的大小來判斷是否有上傳文件
if (img.getSize() > 0) {
// 得到項目在伺服器的真實根路徑,如:/home/tomcat/webapp/項目名/images
String path = session.getServletContext().getRealPath("images");
// 得到文件的原始名稱,如:美女.png
String fileName = img.getOriginalFilename();
// 通過文件的原始名稱,可以對上傳文件類型做限制,如:只能上傳jpg和png的圖片文件
if (fileName.endsWith("jpg") || fileName.endsWith("png")) {
File file = new File(path, fileName);
img.transferTo(file);
return "/success.jsp";
}
}
return "/error.jsp";
}
}
1.3springmvc.xml配置
<!-- 注意:CommonsMultipartResolver的id是固定不變的,一定是multipartResolver,不可修改 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 如果上傳後出現文件名中文亂碼可以使用該屬性解決 -->
<property name="defaultEncoding" value="utf-8"/>
<!-- 單位是位元組,不設置默認不限制總的上傳文件大小,這里設置總的上傳文件大小不超過1M(1*1024*1024) -->
<property name="maxUploadSize" value="1048576"/>
<!-- 跟maxUploadSize差不多,不過maxUploadSizePerFile是限制每個上傳文件的大小,而maxUploadSize是限制總的上傳文件大小 -->
<property name="maxUploadSizePerFile" value="1048576"/>
</bean>
2.多文件上傳

2.1頁面
<form action="${pageContext.request.contextPath}/test/upload.do" method="post" enctype="multipart/form-data">
file 1 : <input type="file" name="imgs"><br />
file 2 : <input type="file" name="imgs"><br />
file 3 : <input type="file" name="imgs"><br />
<input type="submit" name="提交">
</form>
2.2控制器
@Controller
@RequestMapping("/test")
public class MyController {

@RequestMapping(value = "/upload.do", method = RequestMethod.POST)
// 這里的MultipartFile[] imgs表示前端頁面上傳過來的多個文件,imgs對應頁面中多個file類型的input標簽的name,
// 但框架只會將一個文件封裝進一個MultipartFile對象,
// 並不會將多個文件封裝進一個MultipartFile[]數組,直接使用會報[Lorg.springframework.web.multipart.MultipartFile;.<init>()錯誤,
// 所以需要用@RequestParam校正參數(參數名與MultipartFile對象名一致),當然也可以這么寫:@RequestParam("imgs") MultipartFile[] files。
public String upload(@RequestParam MultipartFile[] imgs, HttpSession session)
throws Exception {
for (MultipartFile img : imgs) {
if (img.getSize() > 0) {
String path = session.getServletContext().getRealPath("images");
String fileName = img.getOriginalFilename();
if (fileName.endsWith("jpg") || fileName.endsWith("png")) {
File file = new File(path, fileName);
img.transferTo(file);
}
}
}
return "/success.jsp";
}
}
2.3springmvc.xml配置
<!-- 注意:CommonsMultipartResolver的id是固定不變的,一定是multipartResolver,不可修改 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 如果上傳後出現文件名中文亂碼可以使用該屬性解決 -->
<property name="defaultEncoding" value="utf-8"/>
<!-- 單位是位元組,不設置默認不限制總的上傳文件大小,這里設置總的上傳文件大小不超過1M(1*1024*1024) -->
<property name="maxUploadSize" value="1048576"/>
<!-- 跟maxUploadSize差不多,不過maxUploadSizePerFile是限制每個上傳文件的大小,而maxUploadSize是限制總的上傳文件大小 -->
<property name="maxUploadSizePerFile" value="1048576"/>
</bean>

擴展:
/*
* 通過流的方式上傳文件
* @RequestParam("file") 將name=file控制項得到的文件封裝成CommonsMultipartFile 對象
*/

/*
* 採用file.Transto 來保存上傳的文件
*/

/*
*採用spring提供的上傳文件的方法
*/

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:645
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:936
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:632
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:821
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:731
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1066
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:299
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:160
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:850
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:763