目的:做个文件上传,使用struct2做的主功能
跟网友们探讨下细节,我想实现的是
1.只能要特定类型的文件
2.文件最大有限制大家看看qq邮箱的“添加附件”功能,用户在添加后如果文件大小超过50m,会提示文件过大?这个怎么实现的? 不要告诉我用ajax,后台传过来的,这不是一般的题,由后台判断的话,得把File传过去,这个怎么传?所以这个由javascript判断所以简单了,即我要你们实现的功能是:1.在javascript里判断文件类型
2.在javascript里判断文件大小这个不可能用后台呀,假设用后台,你得把文件传到后台才能判断,这是不现实的!
跟网友们探讨下细节,我想实现的是
1.只能要特定类型的文件
2.文件最大有限制大家看看qq邮箱的“添加附件”功能,用户在添加后如果文件大小超过50m,会提示文件过大?这个怎么实现的? 不要告诉我用ajax,后台传过来的,这不是一般的题,由后台判断的话,得把File传过去,这个怎么传?所以这个由javascript判断所以简单了,即我要你们实现的功能是:1.在javascript里判断文件类型
2.在javascript里判断文件大小这个不可能用后台呀,假设用后台,你得把文件传到后台才能判断,这是不现实的!
那样不美观呀,比方说我要求最大是50m,却传了个100G的,按你的意思是等这100G传递过去才能判断?那样浪费时间
不知楼主是否用过ApacheUpload等组件,如果上传文件大小超过设置的大小,在这个请求传递到后台的时候就抛异常了,错误就是超过大小。
正在用Uploadify,是基于flash,因为目前javascript好像不能得到文件大小
function getFileSize(self,filePath) {
var fileTypes = $("#_fileTypes").val();//允许上传的文件类型
var fileMaxSize = $("#_fileMaxSize").val();
var len = filePath.length;
var fileType = filePath.substring(filePath.lastIndexOf(".") + 1, len);
if(fileTypes.indexOf(fileType)<0){
alert("选择的文件类型不支持");
//self.select();
//document.selection.clear();
self.outerHTML=self.outerHTML;
return;
}
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=b_version.split(";");
var trim_Version=version[1].replace(/[ ]/g,"");
if(browser=="Microsoft Internet Explorer" && trim_Version=="MSIE7.0"){
}else if(browser=="Microsoft Internet Explorer" && trim_Version=="MSIE6.0"){
var image=new Image();
image.dynsrc=filePath;
var fileSize = image.fileSize;
if(fileSize > (fileMaxSize*1)){
alert("文件大小不能超过允许的大小:"+((fileMaxSize*1)/(1024*1024))+"M");
/**/
//self.select();
//document.selection.clear();
self.outerHTML=self.outerHTML;
return;
}
}
}
List<FileItem> files=upload.parseRequest(request);
for(int i=0;i<files.size();i++){
FileItem file=files.get(i);
long size=file.getSize(); //文件大小
}
不要太依赖js了。
是我不表达得不清。
我的做法是,前台用flash判断,后台也判断。
前台必须判断是理由是:如果我要求文件最大是50m,却传了个100G的,如果只后台判断,是不是必须等100G传完了才能判断?