Java如何解决form表单上传文件,以及页面返回处理结果通知!
前端JSP代码
<form id='formSumbit' class='form-horizontal' action='/ncpay/route/chlsubmcht/batchImpor' method='post' enctype='multipart/form-data'>
<input type='file' name='file'>
<input type='submit' value='上传文件'/>
</form>
JS代码
$(function(){
    $('#formSumbit').submit(function (event) {
        //首先验证文件格式
        var fileName = $(this).find("input[name=file]").val();
        if (fileName === '') {
            alert('请选择文件');
            return;
        }
        var fileType = (fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length)).toLowerCase();
        if (fileType !== 'xls' && fileType !== 'xlsx') {
            alert('文件格式不正确,excel文件!');
            return;
        }
        event.preventDefault();
        var form = $(this);
        if (form.hasClass('upload')) {
            //普通表单
            $.ajax({
                type: form.attr('method'),
                url: form.attr('action'),
                data: form.serialize(),
                dataType: "JSON"
            }).success(function () {
                //成功提交
            }).fail(function (jqXHR, textStatus, errorThrown) {
                //错误信息
            });
        }
        else {
            // mulitipart form,如文件上传类
            var formData = new FormData(this);
            $.ajax({
                type: form.attr('method'),
                url: form.attr('action'),
                data: formData,
                dataType: "JSON",
                mimeType: "multipart/form-data",
                contentType: false,
                cache: false,
                processData: false,
                error : function(XHR, textStatus, errorThrown) {
                    alert("网络错误!XHR=" + XHR + "\ntextStatus=" + textStatus
                            + "\nerrorThrown=" + errorThrown);
                },
                success : function(data) {
                    alert(data[0].message);
                }
            });
         }
     });
});
以上做完,就能够正常的请求后台了,但是又出现一个新的问题,前端页面总是执行error,可是请求是成功的。然后继续修改。
在Controller类中设置response.setContentType("text/html; charset=utf-8"); 这里需要注意$.ajax块中dataType: "JSON",这里必须将reponse 的contenType响应头信息设置成
"text/html; charset=utf-8" 否则在页面总是会弹出 “出错”。
@RequestMapping(value="/batchImpor",method=RequestMethod.POST)
public @ResponseBody String v_batch_impor(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response){
response.setContentType("text/html; charset=utf-8");
ReturnJson json = new ReturnJson();
try {
ImportExcel ei = new ImportExcel(file, 0, 0);
List<bz_chl_sub_mcht> list = ei.getDataList(bz_chl_sub_mcht.class);
for (bz_chl_sub_mcht sub_mcht : list) {
recordModify(sub_mcht, ModifyType.ADD);
}
//service_chlsubmcht.saveAll(list);
json.setStatus("0");
json.setMessage("数据导入成功!");
} catch (Exception e) {
json.setStatus("1");
json.setMessage("数据导入失败,请检查数据是否正确或部分数据是否唯一!");
e.printStackTrace();
}
return JSONArray.fromObject(json).toString();
}
结果测试:


Java如何解决form表单上传文件,以及页面返回处理结果通知!的更多相关文章
- django 基于form表单上传文件和基于ajax上传文件
		一.基于form表单上传文件 1.html里是有一个input type="file" 和 ‘submit’的标签 2.vies.py def fileupload(request ... 
- 巨蟒python全栈开发django11:ajax&&form表单上传文件contentType
		回顾: 什么是异步? 可以开出一个线程,我发出请求,不用等待返回,可以做其他事情. 什么是同步? 同步就是,我发送出了一个请求,需要等待返回给我信息,我才可以操作其他事情. 局部刷新是什么? 通过jq ... 
- vue form表单上传文件
		<script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js">< ... 
- 使用form表单上传文件
		在使用form表单上传文件时候,input[type='file']是必然会用的,其中有一些小坑需要避免. 1.form的 enctype="multipart/form-data" ... 
- JsonResponse类的使用、form表单上传文件补充、CBV和FBV、HTML的模板语法之传值与过滤器
		昨日内容回顾 Django请求生命周期 # 1.浏览器发起请求 到达Django的socket服务端(web服务网关接口) 01 wsgiref 02 uwsgi + nginx 03 WSGI协议 ... 
- form表单上传文件使用multipart请求处理
		在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——spring MVC其中的一个优势.Spring通过对Serv ... 
- PHP 后台程序配置config文件,及form表单上传文件
		一,配置config文件 1获取config.php文件数组, 2获取form 表单提交的值 3保存更新config.php文件,代码如下: $color=$_POST['color']; $back ... 
- nodejs 模拟form表单上传文件
		使用nodejs来模拟form表单进行文件上传,可以同时上传多个文件. 以前项目里有这个方法,最近在客户那里出问题了,同事说,这个方法从来就没管用过,SO,用了一天时间把这个方法给搞出来了(觉得花费的 ... 
- 通过form表单上传文件获取后台传来的数据
		小伙伴是不是遇到过这样的问题,通过submit提交form表单的时候,不知怎么获取后台传来的返回值.有的小伙伴就会说你不会发送ajax,其实也会.假如提交的form表单中含有文件,怎么办? 步骤1:想 ... 
随机推荐
- 早上来开启eclipse,谁想代码都不见了,猜想是工作空间换了
			1.试了下网上说的改eclipse配置文件,不好使,连接地址:http://blog.csdn.net/gnail_oug/article/details/53992580 2.然后看了下 eclip ... 
- Android中从SD卡中读取歌曲
			先看看我的效果图吧 Activity类 private TextView nameTextView; private SeekBar seekBar; private ListView listVie ... 
- python学习之准备
			快速入门:十分钟学会Pythonhttp://python.jobbole.com/43922/python框架http://www.elias.cn/Python/HomePage#toc14[Py ... 
- 21天学通C++_Day3_Part2
			0.语句的分行 法1:在第一行末尾添加反斜杠 cout<<"Hello \ World!"<<endl; 法2:将字符串字面量分成两个,编译器注意到两个响铃 ... 
- 使用python对文件中的数值进行累加
			问题描述: 一个文件由若干条记录组成,记录的格式为:“num1 num2”,有时候,需要统计文件中num1对应的num2的总值.处理问题的思路 用传说中的python来处理,很方便.几行代码就可以了. ... 
- Java基础总结大全
			一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. J ... 
- niosii dma实验中的一点感想
			1,使用nios给出的驱动函数的顺序一般为1,清中断2,写控制寄存器,3,写参数寄存器4,中断注册,5,开始工作.因为开始工作控制位在控制寄存器中,所以会想到到最后一块写,省事,但是在dma试验中发现 ... 
- sqlalchemy的缓存和刷新
			其实只是第一次查询了数据库,其他的时候都使用的是缓存,所以有时候,因为这个特性会出错,所以需要刷新对象或者使对象过期 参考链接:http://www.cnblogs.com/fengyc/p/5369 ... 
- ArcGIS相关软件安装的顺序
			1.IIS的安装 2.Server的安装 3.Desktop的安装 4.Lisence的安装 5.ArcGIS的破解配置 6.Oracle文件的配置 7.ArcGIS服务器的部署 8.连接Oracle ... 
- FastAdmin 在线命令生成时出错的分析
			FastAdmin 在线命令生成时出错的分析 出错现象 版本环境 FastAdmin 版本:1.0.0.20180806_beta 在线命令插件版本:1.0.3 分析 2018-08-13 16:12 ... 
