当前位置:首页 » 文件管理 » 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从控制台输入 发布:2025-05-15 17:47:38 浏览:482
上传文章微信 发布:2025-05-15 17:42:46 浏览:812
为什么苹果机比安卓机价格稳定 发布:2025-05-15 17:37:01 浏览:461
公司收信服务器地址 发布:2025-05-15 17:31:27 浏览:696
idle运行python文件 发布:2025-05-15 17:12:19 浏览:231
主存储器属于外存储器吗 发布:2025-05-15 16:54:00 浏览:755
显示屏看股票都有哪些配置 发布:2025-05-15 16:52:39 浏览:397
android行情 发布:2025-05-15 16:52:25 浏览:438
活动上线前服务器配置要注意什么 发布:2025-05-15 16:38:43 浏览:949
王者荣耀安卓区怎么免费转苹果 发布:2025-05-15 16:18:02 浏览:763