2 tianxiehuiyuaninfo tianxiehuiyuaninfo 于 2013.10.17 11:47 提问

jquery ajax 上传文件 后台取不到file

正在做一个文件上传的程序,在上传之前需要验证文件的大小,不能超过10M,我采用的是jquery ajax的方式提交到后台Action,由后台Action判断文件大小。
首先看jsp页面:

上传的文件不得大于10M 。。。。省略部分....

javascript代码:
function checkFileSize() {
var uploadfile = jq("#uploadfile");
var returnval = false;
if(uploadfile.val()==""){
alert("请选择需要上传的文件");
return false;
}
var formData = new FormData();
formData.append("userfile",jq("#uploadfile"));
var url = "ajax/ajax_checkFileSize.action";
jq.ajax({
type: "POST",
url: url,
async: false,
enctype: 'multipart/form-data',
data: formData,
cache: false,
contentType: false,
processData: false,
success: function (msg) {
if(msg=="0"){
jq("#checkfile").text("");
alert("上传文件"+uploadfile.val()+"大于10M");
returnval = false;
}else{
jq("#checkfile").text("文件可以上传");
jq("#checkfile").reset();
returnval = true;
}
}
});
return returnval;
}
ajax后台判断也很简单:
public String checkFileSize() throws IOException{
out = response.getWriter();
String message="";
try {
response.setCharacterEncoding("utf-8");
double size = (double)file.length()/1048576;
if(size>10){
message = "0";
}else{
message = "1";
}

    } catch (Exception e) {
        e.printStackTrace();
        message="0";
    }finally{
        out.write(message);
        out.flush();
        out.close();
    }
    return null;
}

但是每次都在double size = (double)file.length()/1048576;这里报空指针异常

请大家帮忙看看!

2个回答

sherry718
sherry718   2016.03.29 16:51

你好,为什么为null 你解决了么?

D1208
D1208   2014.09.25 10:13

现在说文件上传一般都用spring的MultipartFile,前台指定form的encType="multipart/form-data",后台直接用MultipartFile接收,然后转换成file

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
提交含有文件的From,后台获取不到File
有时遇到用From提交File,但是后台用Request.File获取不到文件 有2个方法 <!-- 方法1 设置enctype,防止后台获取不到File对象 --> 上传 <!-- 方法2 设置contentType:false,迫使jQuery不为你添加内容类型标头,否则边界字符串将忽略它。 同
ajaxFileUpload+Struts2文件上传
前台:     1. 引入ajaxFileUpload.js文件       2. 前台通过input type=file文件的onchange方法去调用上传js代码 如果想在执行ajax代码以后控制文件显示的信息,就需要做隐藏的type=file控件,因为不同浏览器对这个控件支持不一样,显示的信息也不同,我的做法如下:   3. js代码 这里面是用docu
文件上传ajaxFileUpload.js使用方法 包含后台接收方法
1.   引用ajaxfileupload.js文件,该文件依托于jquery,因此需要先引入jquery库。 2.  JSP页面编写方法。其中type为file的input框为了美观优化,是不显示,但是有用处的确实该部分。 因此,需要调整好text和button类型的高度和宽度,与file类型的input对应。 3.  CSS部分。file的宽度略大于txt和uploa
ajax上传文件struts2后台接收处理
前段时间由于项目的需求,实现文件上传并要求页面不刷新。我便首先想到了ajax,我通过查阅之前终于可以实现这个功能了,小弟今天特此和大家分享一下。ajax上传实质上分为两种: 一、基于iframe异步提交数据,将form表单数据创建到一个页面隐藏的iframe,提交iframe里的数据。代码如下:
sturts2上传文件,后台获取不到文件!
struts2上传文件,后台获取不到文件!         对于大部分程序员来说 文件上传功能应该并不会陌生,因为这个功能我们经常会用到!!       同样的,本人也经常用到这个功能,但是我发现一个非常严重的问题,我虽然用了很多次了,但是每次用都会或多或少的遇到些问题,这些问题虽然很容易解决,但是要找出来却是很麻烦的事情!这不,今天又用到了这个功能,我楞是纠结了一下午,找遍所有资料都没提到
使用ajaxfileupload插件上传文件取不到值
js: $.ajaxFileUpload({ url: "test.do", secureuri: false,//同步 fileElementId: 'uploadFile', //文件选择框的id属性 dataType: 'j
关于form表单提交文件file后台controller中参数获取不到的解决办法
ssm 前台jsp的form表单里 &amp;lt;form class=&quot;avatar-form&quot; action=&quot;upload/uploadPhoto.do&quot; enctype=&quot;multipart/form-data&quot; method=&quot;post&quot;&amp;gt; ... &amp;lt;input type=&quot;file&quot; class=&quot;avatar-input&quot; id=&quo
c# asp.net Ext file fileUpload文件上传后台Request.Files获取不到解决办法
今天在搞这个ux.fileUpload控件的时候杯具了一天,后台总是获取不到Files对象,google了一下午未果,晚上回来再试的的时候成功了,我用的版本是3.3的,用的FormPanel提交,在他的API里面看了下,没有提供fileUpload:true这个属性,只有Basi
Asp.net上传文件Request.files获取不到文件
使用ftp上传文件,并且Request.files获取文件,今天发现获取到的文件个数始终是0个,查了下原来form标签中需加入enctype=”multipart/form-data”,呵呵       大家注意,除了上述外,控件必须有name属性,不然后台也是获取不到的,郁闷吧 博客链接地址:http://blog.163.com/wangpeng126_2009@126/blo
前台使用ajax与后台进行文件传输
前台使用ajax与后台进行文件传输在网上想搜如何用jQuery与控制表单与后台进行文件传输 大部分的回答都是直接用form表单提交 然而我想要的是使用ajax技术将文件传到后台,经过后台的处理后再返回信息到前台 然后发现网友建议使用jQuery表单框架,如AjaxUploadFile,Uploadify 在这里想和大家分享一下如何使用ajax技术向后台传送文件FormData这是HTML5的