Javascript 避免将0 KB文件附加到文件上载控件

Javascript 避免将0 KB文件附加到文件上载控件,javascript,asp.net,file-upload,Javascript,Asp.net,File Upload,在我的ASP网站中,我有一个带有文本框的表单,一个文件上传控件和提交表单选项。我希望避免用户附加0 KB文件。我可以在后台的vb代码中获得大小。但是我如何获得文件大小并避免用户附加它呢。如果用户附加了一个0 kb的文件,我想给用户一条验证消息。如何做到这一点?回答如下: 上传前使用Javascript验证文件大小。可以使用大多数现代浏览器中包含的文件API实现 var input = document.getElementById('file'); if(input.files[0].size&

在我的ASP网站中,我有一个带有文本框的表单,一个文件上传控件和提交表单选项。我希望避免用户附加0 KB文件。我可以在后台的vb代码中获得大小。但是我如何获得文件大小并避免用户附加它呢。如果用户附加了一个0 kb的文件,我想给用户一条验证消息。如何做到这一点?

回答如下:

上传前使用Javascript验证文件大小。可以使用大多数现代浏览器中包含的文件API实现

var input = document.getElementById('file');
if(input.files[0].size<1000) alert('Please make the file at least 1kb!');
var input=document.getElementById('file');

如果(input.files[0].size,您可以在客户端执行此操作,如下所示:

function GetFileSize(fileid) {
    try {
        var fileSize = 0;
        //for IE
        if ($.browser.msie) {
            //before making an object of ActiveXObject, 
            //please make sure ActiveX is enabled in your IE browser
            var objFSO = new ActiveXObject("Scripting.FileSystemObject"); var filePath = $("#" + fileid)[0].value;
            var objFile = objFSO.getFile(filePath);
            var fileSize = objFile.size; //size in kb
            fileSize = fileSize / 1048576; //size in mb 
        }
            //for FF, Safari, Opeara and Others
        else {
            fileSize = $("#" + fileid)[0].files[0].size //It will calculate file size in kb

             // Put Your Alert or Validation Message Here


        }

    }
    catch (e) {
        alert("Error is :" + e);
    }
}

好的。但是詹姆斯·亨特的回答似乎简单明了。使用这种方法有什么缺点吗?是的,可能是……但是要确保它在所有浏览器中都能工作;)上面的代码在IE 8中也不能工作。因为
filePath
将被设置为假路径(例如C:\fakepath\New Text Document.txt而不是文件的真实路径),而不是实际路径。so objFile.size;命令文件并给出类似文件未找到的错误在IE8中不起作用给出错误:“files.0”为null或不是对象。但在chromePolyfill中可以实现文件API的向后兼容性-