无论如何要在上传前确定文件大小?

时间:2010-07-08 19:47:19

标签: asp.net javascript vb.net extjs

所以我们遇到了这个问题。一个用户去上传一个文件,如果它超过10MB,它只是在页面上出现了一段时间,并且清除了,并且没有任何好的错误来描述发生了什么。理想情况下,我们希望在用户选择要上传的文件时检查文件大小,但我不知道这是否可行。我们的框架是用ASP.NET,VB.NET和Javascript(以及ExtJS 3.0)构建的,它在IE中运行。

无论如何要做到这一点?

6 个答案:

答案 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文件标签是不可能的,因为安全原因,页面无法访问用户磁盘,而这需要检查文件大小。

我已经看到用闪光灯完成但我不是闪光灯。

相关问题