input file标签 获得添加文件大小的方法


1.火狐浏览器(或非IE)

document.getElementById("input file ID").files[0].size;

此种方法不能兼容所有浏览器


2.IE浏览器(个人验证未成功,但网络传言有这么回事)

filePath = document.getElementById("input file ID").value;

var fso = new ActiveXObject("Scripting.FileSystemObject");

var fileSize = fso.GetFile(filePath).size;

此种方法存在安全问题,据说把文件名改为.hta会屏蔽掉安全提示


3.使用img标签加载选择的文件(图片)(个人验证IE,火狐都不成功,但网络传言。。)

var img = new Img(); 也可以在页面上直接定义一个img标签

img.src = document.getElementById("input file ID").value;

var picSize = img.fileSize;


4.使用SWFUpload上传组件来上传,该组件利用Flash自身的文件提交技术而无需刷新页面,而且能够获取文件上传进度,可以提交多个文件,而且还能控制上传文件的大小,类型等信息。(网上有各种教程)


5.使用ajax上传提交,在服务端获得文件大小并校验,不符合要求返回错误并重刷页面(目前CSDN的文件上传功能使用该方法,许多网站也使用类似的这种方法)

(getJSON为简化版的ajax方法)这里服务端使用的为PHP

$.getJSON("/index.php/upload/checkform/"+ $("#txt_validcode").serialize(),   --发送地址
function(data){
if(data.succ==0)    --这里是验证码错误
{
alert(data.errmsg);
$("#imgValidcode").attr('src','/index.php/rest/tools/validcode/uploadvalidcode/'+Math.random());
}else{     --这里是验证码正确
xhr = $('#uploadform').ajaxSubmit({--马上由ajax来提交表单
dataType:  'json', 
beforeSubmit: function(a,f,o) {--提交之前的操作
startProgress();
},
    success: function(data) {--提交成功后的操作
    $("#txt_title").val('');
    $("#txt_tag").val('');
    $("#txt_desc").val('');
    $("#txt_userfile").val('');
    $('#li_userfile').html('未选择文件');
    $("#sel_filetype").empty();
    $("#sel_primary").empty();
    $("#sel_subclass").empty();
    $("#sel_score").empty();
    $("#txt_validcode").val('');
    $("#imgValidcode").click();
    stopProgress();
    if(data.succ==1)--校验都成功,直接传到成功页面
    {
window.location.href='/upload/success';
    }
    else--校验失败(如文件大小超限),页面重新加载
    {
    alert(data.errmsg);
    window.location.reload();
    }
   
   });
 }
});

你可能感兴趣的:(java)