关于SpringMVC中文件上传的问题, enctype="multipart/form-data"

远东HQ 2017-12-13 10:19:16
最近在做公司项目的时候遇到了一个问题,使用SpringMVC为基础的一个框架来做一个文件上传的功能,
源码如下
<body class="white-bg" formid="gyglForm">
<form:form id="gyglForm" modelAttribute="data" method="post" class="form-horizontal" enctype="multipart/form-data" name="theFile">
<form:hidden path="id" />
<table class="table table-bordered table-condensed dataTables-example dataTable no-footer">
<tbody>
<tr>
<td>文件编号:${data.num}</td>
</tr>
<tr>
<td><input type="file" value="上传文件"/></td>
</tr>
</tbody>
</table>
</form:form>

<%-- <form action="onLoadFile" id="gyglForm" class="form-horizontal" method="post" enctype="multipart/form-data" name="theFile">
<form:hidden path="id"/>
<table class="table table-bordered table-condensed dataTables-example dataTable no-footer">
<tbody>
<tr>
<td>文件编号:${data.num}</td>
</tr>
<tr>
<td><input type="file" name="theFile" /></td>
<td><input type="submit" value="提交" class="form-control/></td>
</tr>
</tbody>
</table>
</form> --%>
</body>

后台Controller层
@RequestMapping(value = "{id}/onLoadFile", method = {RequestMethod.POST})
@ResponseBody
public AjaxJson onLoadFile(@PathVariable("id") String id,@RequestParam("theFile")MultipartFile file,HttpServletRequest request,
HttpServletResponse response) {
AjaxJson ajaxJson = new AjaxJson();
ajaxJson.success("文件上传成功");
String str = file.getOriginalFilename();
String url = "E:/JXD_Eclipse/wpms/WebRoot/WEB-INF/webpage/modules/gygl/gyglFile/"+str;
System.out.println(url);

Gygl gygl = commonService.selectById(id);
gygl.setFilepath(url);
commonService.insertOrUpdate(gygl);
try {
file.transferTo(new File(url));
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return ajaxJson;
}

在使用前天页面中,被注释掉的那部分是可以成功的,在controller的方法里也可以接收到数据,但是使用Form:form形式提交的时候,后台总是报he current request is not a multipart request错误,请问这是为什么?
...全文
421 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_44141758 2019-10-18
  • 打赏
  • 举报
回复
11111111
代码间的舞者 2017-12-16
  • 打赏
  • 举报
回复
<form:form 没有指定action
hp961218 2017-12-13
  • 打赏
  • 举报
回复
可能是请求方法路径冲突吧,如果是文件上传问题,显示的错误不应该是request问题
vswen5 2017-12-13
  • 打赏
  • 举报
回复
没用过这个form:form 给你一个ajax上传的 方便快捷

<form action="" method="post" id="gpAddForm">
<input type="file" name="file"/>
</form>
var formData = new FormData($("#gpAddForm")[0]);
$.ajax({  
        url: "",
        type: "post",
        data: formData,
        contentType: false,
        processData: false,
        success:function(data){  

        }
});
远东HQ 2017-12-13
  • 打赏
  • 举报
回复
我设置过enctype属性了,仔细看看
dong_19890208 2017-12-13
  • 打赏
  • 举报
回复
在form标签条件enctype="multipart/form-data" 属性设置
wpcqazwsx 2017-12-13
  • 打赏
  • 举报
回复
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置上传文件的最大尺寸--> <property name="maxUploadSize"> <value>11115242880</value> </property> </bean>
远东HQ 2017-12-13
  • 打赏
  • 举报
回复
公司让用这个框架去实现,要是自己写页面的话很好说

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧