上传前验证文件大小

本文关键字:文件大小 验证 | 更新日期: 2023-09-27 18:29:11

我需要验证要上传到服务器的文件。验证必须在上传之前完成,即在客户端完成验证。此任务应在ASP.NET MVC3网页中完成。它还应该适用于所有浏览器。IE9,8,7/FF/铬。我知道IE没有FileReader API。

我的问题是,如何在MVC3网页上传之前验证文件大小。

上传前验证文件大小

您可以通过使用jquery来实现:

#
<span>
<b>Attachment</b> (8 MB only)<label id="attached" style="color:red; margin-left:5px"></label>
</span>
<input type="file" id="Attachment" name="Attachment" class="admin_textfeildmedium" value="" style="width:551px" accept="image/*">
#
jQuery(document).ready(function () {

jQuery('#Attachment').bind('change', function () {
                            //fileUpload = 0;
                            var iSize = (this.files[0].size / 1024);
                            if (iSize / 1024 > 1) {
                                if (((iSize / 1024) / 1024) > 1) {
                                    fileUpload = 0;
                                } else {
                                    iSize = (Math.round((iSize / 1024) * 100) / 100);
                                    if (iSize <= 8) {
                                        fileUpload = 1;
                                    } else {
                                        fileUpload = 0;
                                    }
                                }
                            } else {
                                fileUpload = 1;
                            }
                            if (fileUpload == 0) {
                               // alert("Your attachment exceeded 8MB.");
                                jQuery('#attached').html('Your attachment exceeded 8MB.');
                                jQuery('#Attachment').val('');
                            }
                        });
                    });

.Net MVC解决方案:

我正在使用HttpPostedFileBase 的数据类型

Views > Shared文件夹中,创建一个名为"EditorTemplates"的新文件夹,并使用以下内容:

@model HttpPostedFileBase
@Html.TextBox("", null, new { type = "file" })

然后,我将这个HttpPostedFileBase对象从控制器传递给一个执行以下操作的方法:

 public Files Upload(HttpPostedFileBase files)
 {
    if (files.ContentLength > 0) {
    .....
 }

HttpPostedFileBase类的ContentLength属性包含已发布文件中的字节数

这将使您有一个可用的文件上传框。

关于ASP.NET WebForms解决方案:

<asp:FileUpload ID="fuPictures" runat="server" />

制作一个带有OnClick或OnCommand事件的按钮,其作用如下:

if (fuPictures.HasFile == true)
{
    int fileSize = fuPictures.FileBytes;
}

这将为您提供文件大小。希望这能有所帮助。

对于支持HTML5的浏览器来说,只需简单的javascript:就可以轻松实现

Html语法

<input type="file" id="myFile" />

Javascript语法

//gets the element by its id
var myFile = document.getElementById('myFile');
//binds to onchange event of the input field
myFile.addEventListener('change', function() {
  //this.files[0].size gets the size of your file.
  alert(this.files[0].size);
});

但是,当涉及到较旧的浏览器时(我们都在期待您,Internet Explorer),在客户端实现这一点的唯一方法是使用ActiveX:

var myFile = document.getElementById('myFile');
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = myfile.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size;
    alert(size + " bytes");