您好我使用jQuery实现了上传最大文件大小验证,并且它在正常工作 Chrome和Firefox在IE中无法正常工作
$('#file').change(function() {
fileSizeError = (this.files[0].size/(1024*1024) > 1) ? true : false;
});
请帮我解决这个问题
谷歌搜索后,我找到了一个创建ActiveXObject的解决方案。代码在
下面var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size;
alert(size + " bytes");
但我无法创建一个ActiveXObject我的目标是这个代码适用于IE和 其他浏览器也是。
答案 0 :(得分:0)
**You can check this file size in server side using jquery webmethod**
如hoodedperson70 here所述:
当然,这是一个例子,但我无法测试......它应该有效 虽然:
<html> <head> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> <script type="text/javascript" src="ajaxfileupload.js"></script> <script type="text/javascript"> $(document).ready(function () { $("#submit1").click(function () { var file == $("#file1"); if (file.value = "" || file.value == null) { alert("You must provide a file."); } else { ajaxFileUpload(); } }); }); function ajaxFileUpload() { //starting setting some animation when the ajax starts and completes $("#loading").ajaxStart(function () { $(this).show(); }) .ajaxComplete(function () { $(this).hide(); }); /* preparing ajax file upload url: the url of script file handling the uploaded files fileElementId: the file type of input element id dataType: it supports json, xml secureuri: use secure protocol success: call back function when the ajax complete error: callback function when the ajax failed */ $.ajaxFileUpload ( { url: 'THE WEB SERVICE URL', secureuri: false, fileElementId: 'file1', dataType: 'json', success: function (data, status) { if (data.success == "true") { $("#results").html("Valid file size, " + data.length); } else { $("#results").html("Invalid file size, " + data.length); } }, error: function (data, status, e) { alert(data + ", " + e); } } ) return false; } </script> </head> <body> <form id="form1" method="POST" action="" enctype="multipart/form-data"> <input type="file" id="file1" name="file1" /> <input type="button" id="submit1" name="submit1" value="Upload (size will be checked)" /> <img src="loading.gif" alt="Loading" id="loading" style="display:none;" /> <br /><br /><br /> <div id="results"></div> </form> </body> </html>
这是网络服务代码:
[WebMethod] public string CheckFileSize(HttpContext context) { var file1 = context.Request.Files[0]; if (file1 != null && file1.ContentLength > 0) { if (file1.ContentLength > 1024) // This is the IMPORTANT comparison { return "{\"success\":\"true\",\"length\":\"" + file1.ContentLength + "\"}"; } else { return "{\"success\":\"false\",\"length\":\"" + file1.ContentLength + "\"}"; } } }
您需要点击此链接: http://www.phpletter.com/download_project_version.php?version_id=34来 下载.js文件和“loading.gif”文件。就我的例子而言,他们 在同一个目录中,但你可能没有,所以你需要 如有必要,改变他们的路径。
我没有意识到他们使用PHP作为处理,但这应该 仍然工作相同。 javascript应该能够提交 文件到任何类型的技术,所以它取决于Web服务 逻辑。使用HttpContext很可能不适合 这种情况,但你可以测试一下。
客户端验证不仅仅是方法
否则,只需这样尝试
if (FileUpload1.PostedFile.ContentLength > 5120) // 5120 KB means 5MB
{
//Display a warning
Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Alert", "alert('File is too big')", true);
}
else
{
//save the file here
}