所以我们遇到了这个问题。一个用户去上传一个文件,如果它超过10MB,它只是在页面上出现了一段时间,并且清除了,并且没有任何好的错误来描述发生了什么。理想情况下,我们希望在用户选择要上传的文件时检查文件大小,但我不知道这是否可行。我们的框架是用ASP.NET,VB.NET和Javascript(以及ExtJS 3.0)构建的,它在IE中运行。
无论如何要做到这一点?
答案 0 :(得分:4)
我认为使用标准HTML表单无法做到这一点。
看看SWFUpload。这将允许您控制文件大小。
答案 1 :(得分:3)
以下代码适用于Firefox和Chrome,但在IE和Opera上省略了检查。我认为在IE中你可能需要使用ActiveXObject。从here略微修改和修改。
<script type="text/javascript">
var clicked = false;
function checkSize() {
var node = document.getElementById('file');
var check = node.files[0].fileSize;
if (check > 4096)
{
alert('Your file is too big!');
return false;
}
}
</script>
<form enctype="multipart/form-data" action="upload_file.php" method="post" class="body">
Select a file: <input type='file' id='file' name='file'>
<input type='submit' value=' Upload File ' onClick='return checkSize()'>
</form>
答案 2 :(得分:2)
您可以在Web配置中设置限制,该属性称为MaxRequestLength。
在web.config中的httpRuntime部分中设置它:
<httpRuntime executionTimeout="90" maxRequestLength="4096" /> <-- number of bytes
应该在<system.web>
至于检查文件的大小,它就像
一样简单If txtFileUpload.PostedFile.ContentLength > 1024 Then <-- bytes
答案 3 :(得分:1)
您是否可以使用或尝试过使用ActiveXObject?
未经测试(可能无法在IE7 +中使用)
function checkSize(fileInput, limit){
if(!window.ActiveXObject){
return false;
}
var oas = new ActiveXObject("Scripting.FileSystemObject"),
d = fileInput.value,
e = oas.getFile(d),
f = e.size;
return f <= limit; // in bytes
}
答案 4 :(得分:0)
如果Flash是您的选项,您可以尝试swfupload。
答案 5 :(得分:0)
使用普通的javascript和HTML文件标签是不可能的,因为安全原因,页面无法访问用户磁盘,而这需要检查文件大小。
我已经看到用闪光灯完成但我不是闪光灯。