當前位置:首頁 » 文件管理 » mvc大文件上傳

mvc大文件上傳

發布時間: 2022-11-26 09:41:40

Ⅰ 求SpringMVC大文件上傳詳解及實例代碼

SpringMVC的文件上傳非常簡便,首先導入文件上傳依賴的jar:
<!-- 文件上傳所依賴的jar包 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>

在springMVC-servlet.xml配置文件中配置文件解析器:
<!--1*1024*1024即1M resolveLazily屬性啟用是為了推遲文件解析,以便捕獲文件大小異常 -->
<!--文件上傳解析器-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1048576"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="resolveLazily" value="true"/>
</bean>
注意解析器的id必須等於multipartResolver,否則上傳會出現異常
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import java.io.File;

@Controller
public class FileController {
/**
* 上傳單個文件操作
* MultipartFile file就是上傳的文件
* @return
*/
@RequestMapping(value = "/upload1.html")
public String fileUpload1(@RequestParam("file") MultipartFile file) {
try {
//將上傳的文件存在E:/upload/下
FileUtils.InputStreamToFile(file.getInputStream(), new File("E:/upload/",
file.getOriginalFilename()));
} catch (Exception e) {
e.printStackTrace();
}
//上傳成功返回原來頁面
return "/file.jsp";
}}

上傳文件時,Controller的方法中參數類型是MultipartFile即可將文件映射到參數上。
頁面:
file.jsp:
<form method="post" action="/upload1.html" enctype="multipart/form-data">
<input type="file" name="file"/>
<button type="submit" >提交</button>
</form>

Ⅱ springmvc如何攔截上傳文件最大限制異常

在applicationContext.xml中添加: <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 指定所上傳文件的總大小不能超過20M。注意maxUploadSize屬性的限制不是針對單個文件,而是所有文件的容量之和 --> <property name="maxUploadSize" value="2000000"/><!-- 1G 1073741824 --> <property name="defaultEncoding" value="utf-8"></property> <property name="resolveLazily" value="true"></property> </bean> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 指定所上傳文件的總大小不能超過20M。注意maxUploadSize屬性的限制不是針對單個文件,而是所有文件的容量之和 --> <property name="maxUploadSize" value="2000000"/><!-- 1G 1073741824 --> <property name="defaultEncoding" value="utf-8"></property> <property name="resolveLazily" value="true"></property> </bean> 只需在控制層 @Excep... 在applicationContext.xml中添加:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 指定所上傳文件的總大小不能超過20M。注意maxUploadSize屬性的限制不是針對單個文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="2000000"/><!-- 1G 1073741824 -->
<property name="defaultEncoding" value="utf-8"></property>
<property name="resolveLazily" value="true"></property>
</bean>

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 指定所上傳文件的總大小不能超過20M。注意maxUploadSize屬性的限制不是針對單個文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="2000000"/><!-- 1G 1073741824 -->
<property name="defaultEncoding" value="utf-8"></property>
<property name="resolveLazily" value="true"></property>
</bean>

只需在控制層
@ExceptionHandler
public ModelAndView doException(Exception e, HttpServletRequest request) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
if (e instanceof ) {
long maxSize = (() e).getMaxUploadSize();
map.put("error", "上傳文件太大,不能超過" + maxSize / 1024 + "k");
// response.setHeader("Content-type", "text/html;charset=UTF-8");
// // 設置默認編碼
// response.setCharacterEncoding("UTF-8");
// response.getWriter().write("上傳文件太大,不能超過" + maxSize / 1024 + "k");
} else if (e instanceof RuntimeException) {
map.put("error", "未選中文件");
} else {
map.put("error", "上傳失敗");
}
return new ModelAndView("upload", map);

}

@ExceptionHandler
public ModelAndView doException(Exception e, HttpServletRequest request) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
if (e instanceof ) {
long maxSize = (() e).getMaxUploadSize();
map.put("error", "上傳文件太大,不能超過" + maxSize / 1024 + "k");
// response.setHeader("Content-type", "text/html;charset=UTF-8");
// // 設置默認編碼
// response.setCharacterEncoding("UTF-8");
// response.getWriter().write("上傳文件太大,不能超過" + maxSize / 1024 + "k");
} else if (e instanceof RuntimeException) {
map.put("error", "未選中文件");
} else {
map.put("error", "上傳失敗");
}
return new ModelAndView("upload", map);

}
即可攔截到上傳文件大小

Ⅲ mvc 無法上傳大文件 提示超過長度

你在配置文件裡面已經設置了 上傳的最大長度了 當 選擇的文件超過這個超度 就會報這個錯啊

Ⅳ 關於MVC4裡面的大文件上傳,該怎麼解決

你指的是多大

Ⅳ 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提供的上傳文件的方法
*/

Ⅵ SpringMVC 前端大文件上傳如何實現

你是要問前端的代碼,還是要問後端的配置和代碼實現?還有多大的文件?還有你用的spring的版本也是有影響的,所以,也需要你透露下spring的版本

Ⅶ spring mvc 怎麼大小上傳文件控制

1、SpringMVC的配置文件裡面可以配置限制上傳文件的大小,比如40MB,但是,如果在頁面上上傳超過40MB ,則他都不進入到Action,則直接就報錯了。被攔截了。

2、客戶端判斷的話,IE8、IE9、火狐好像支持都不一樣,有說用Flash的,有說用HTML5的,
個人感覺HTML5不太靠譜,畢竟現在的應用肯定是要支持IE8、IE9的。

Ⅷ 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;

Ⅸ 關於MVC4裡面的大文件上傳,該怎麼解決

大文件上傳確實不太容易,網上說的只是大概的思路,但是實現起來還是有很大難度的。大部分都是借用外部插件,好用的插件都是收費(而且費用不低), 不免費的插件能上傳2GB以上的文件少之又少, 測試了好多款,只有neatupload最好用還免費,只不過沒法在MVC裡面用

Ⅹ 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。

熱點內容
C事件編程 發布:2024-10-05 15:15:43 瀏覽:638
一台伺服器出現兩IP 發布:2024-10-05 15:10:05 瀏覽:924
md5加密演算法c 發布:2024-10-05 15:05:40 瀏覽:760
如何重設控制器密碼 發布:2024-10-05 14:19:13 瀏覽:439
安卓如何遠程簽到 發布:2024-10-05 14:11:11 瀏覽:301
阿里雲伺服器控制面板 發布:2024-10-05 13:57:48 瀏覽:819
涉法涉訴信訪問題意見 發布:2024-10-05 13:56:23 瀏覽:895
華為路由器配置導出的方法有哪些 發布:2024-10-05 13:55:36 瀏覽:163
我的世界好玩伺服器拍視頻 發布:2024-10-05 13:23:19 瀏覽:557
穿越火線掛機腳本 發布:2024-10-05 13:05:44 瀏覽:39