当前位置:首页 » 文件管理 » 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。

热点内容
虚幻4脚本 发布:2024-10-05 16:46:29 浏览:205
c可以用来编译系统软件吗 发布:2024-10-05 16:22:26 浏览:19
U盘和存储器 发布:2024-10-05 16:22:04 浏览:898
cmdc语言 发布:2024-10-05 15:58:32 浏览:553
服务器怎么弄公网ip 发布:2024-10-05 15:57:02 浏览:642
设备配置在什么地方 发布:2024-10-05 15:44:59 浏览:251
matlab外部接口编程 发布:2024-10-05 15:36:58 浏览:366
C事件编程 发布:2024-10-05 15:15:43 浏览:641
一台服务器出现两IP 发布:2024-10-05 15:10:05 浏览:927
md5加密算法c 发布:2024-10-05 15:05:40 浏览:763