3

我在学习 Microsoft Web-Application Developer 考试时遇到了这个问题,

您正在实现一个允许用户将文件上传到 Web 服务器的网页。该页面包含一个带有提交按钮的表单。您想限制上传,以便只能上传小于 1 MB 的文件。

给出的答案是:

添加一个 ASP.NET FileUpload 控件并将其配置为在服务器上运行。将服务器端 OnClick 处理程序添加到表单的提交按钮以仅在允许文件大小时保存文件

但这不是意味着文件已经上传到服务器了吗?我们只是选择是否保存它?可以在客户端完成吗?

4

2 回答 2

2

在进行文件上传时,您可以检查许多事情。在服务器端,还有最大请求大小,这实际上会停止上传。但你是对的,在这些检查中的任何一个被捕获时,上传就已经执行了。

您现在可以在支持的浏览器上使用 HTML5 File API 来更智能地上传文件,包括在客户端检索文件的大小,甚至显示预览。请参阅此处的示例:客户端使用 HTML5 检查文件大小?

于 2012-08-08T08:24:36.083 回答
1

使用 IE:

<html>
<head>
<script>
function getSize()
{
    var myFSO = new ActiveXObject("Scripting.FileSystemObject");
    var filepath = document.upload.file.value;
    var thefile = myFSO.getFile(filepath);
    var size = thefile.size;
    alert(size + " bytes");
}
</script>
</head>
<body>
<form name="upload">
<input type="file" name="file">
<input type="button" value="Size?" onClick="getSize();">
</form>
</body>
</html>

使用 Chrome 或 Firefox:使用 jQuery 和 HTML5 File API 规范实现后,您可以使用这个简单的代码段来访问文件属性,例如大小:

//binds to onchange event of your input field
$('#myFile').bind('change', function() {
    alert(this.files[0].size);
});

来源:关于该主题的优秀文章:http ://www.kavoir.com/2009/01/check-for-file-size-with-javascript-before-uploading.html

于 2012-08-08T08:28:32.067 回答