file文件上传总结
来源:互联网 发布:魔镜软件哪个好 编辑:程序博客网 时间:2024/05/28 06:05
1、 基本配置
1) form表单添加enctype="multipart/form-data"
<form role="form" action="javascript:void(0)"id="addImpDatasForm"name="addImpDatasForm"method="post"enctype="multipart/form-data">
知识点:enctype的multipart/form-data是专门用于文件上传的MIME格式,不会对提交数据进行编码,上传的就是原始的二进制编码,而form表单默认是application/x-www-form-urlencoded的格式,不适用于文件上传,因为他会把form表中的数据进行编码。
2) form表单里添加file文件类型:<input type="file"name="fileName" id="fileName">
3) spring-mvc.xml配置文件中添加代码:<beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
2、 jsp页面提交及接收
1) form表单
<formrole="form"action="javascript:void(0)"id="addImpDatasForm"name="addImpDatasForm"method="post"enctype="multipart/form-data">
<input type="file"name="fileName" id="fileName">
<buttontype="button"class="btnbtn-primary"id="btn-submitImpDatas"onclick="subimtBtn();">提交</button>
</form>
2) 提交代码
<scripttype="text/javascript">
function subimtBtn() {
var form = $("form[name=addImpDatasForm]");
var options = {
url:'${ctx}/impDataBatchCtrl/saveDataBatchInfo.do',
type:'post',
data: form,
success:function(data)
{
}
};
form.ajaxSubmit(options);
}
</script>
3) ctroller接收
@RequestMapping("saveDataBatchInfo")
@ResponseBody
public String saveExcelInfo(MultipartFile fileName,@ModelAttribute ImpDataBatchQvo batchQvo,HttpServletRequestrequest,Model model){
FileItemfileItem = ((CommonsMultipartFile) fileName).getFileItem();
InputStreamins = null;
if(!fileItem.isFormField() &&fileItem!=null){//判断是否为文件域
try{
ins =fileItem.getInputStream();
}catch(IOException e) {
log.error("文件流获取错误:"+e.getMessage());
return"inputStreamErr";
}
//有了InputStream,就可以对上传的excel文件进行操作了
}
}
3、 问题总结:
1) form.ajaxSubmit is not a function
原因:没引用jquery.form.js这个插件
修改:在jsp中引入:<scriptsrc="${ctxStatic} /js/jquery-form.js"type="text/javascript"></script>
jquery-form.js包下载见:http://download.csdn.net/detail/liuguom125/9867321
2) Ctroller中的MultipartFile fileName接收参数值为空
现象:
@RequestMapping("saveDataBatchInfo")
@ResponseBody
public String saveDataBatchInfo(MultipartFile fileName,@ModelAttribute ImpDataBatchQvobatchQvo,HttpServletRequest request,Model model){
//fileName = null,应该有值
//业务逻辑
}
原因:jsp中的file的name值应该与该参数名相同。
修改:MultipartFile fileName 和file中的name值(fileName)保持一致。<inputtype="file" name="fileName" id="fileName">
3) 文件上传时对表单提交,ctroller里的方法接收不到。
原因:文件上传只能进行submit方法进行提交,不能用ajax进行提交。
修改:采用form表单形式进行提交
<scripttype="text/javascript">
function subimtBtn() {
var form = $("form[name=addImpDatasForm]");
var options = {
url:'${ctx}/impDataBatchCtrl/saveDataBatchInfo.do',
type:'post',
data: form,
success:function(data)
{
}
};
form.ajaxSubmit(options);
}
</script>
- file文件上传总结
- html:file上传文件
- Ext file 上传文件
- input file 上传文件
- input file文件上传
- H5上传文件file
- RAP upload file 上传文件
- 文件上传 file submit button
- JavaScript File API 文件上传
- PHP文件上传(File Uploads)
- 文件上传 type=file
- <s:file/>多文件上传
- angular file upload 文件上传
- File上传文件后缀名 限制
- 自定义文件上传file样式
- File + C# 多文件上传
- input为file上传文件
- input为file上传文件
- 银行家算法--避免死锁
- iOS 如何成为一位卓越的技术经理?
- 1 vundle使用
- 斗地主(大暴搜)
- npm scripts 使用指南
- file文件上传总结
- Java基础-多线程基础篇
- 屁股决定脑袋,思想决定高度
- 二叉树之重建(js)
- Qt中connect函数(信号与槽)初识
- [leetcode]604. Design Compressed String Iterator
- 起重配件停止器及制动器有什么作用
- 多线程编程1 --线程创建,退出,等待,分离
- ORM框架的学习总结