使用jQuery文件[] .size函数和ASP.NET FileUpload控件的一些误解。

时间:2016-01-07 09:58:41

标签: jquery asp.net

我是Jquery和ASP.NET的新手,所以也许我的问题对你们中的一些人来说似乎很幼稚。

我需要先检查文件大小,然后再将其上传到服务器。

我有这个ASP.NET代码:

        <div class="label">
            Select file           
        </div>
        <asp:FileUpload ID="fileAsyncUpload" runat="server" Width="270" />
        <asp:Button ID="Button1" runat="server" Text="Upload" OnClientClick="GetFileSize()" />
    </div>

我有这个jquery函数:

function GetFileSize() {
    try {
        var fileSize = 0;
        fileSize = $("#" + '<%= fileAsyncUpload.ClientID %>')[0].files[0].size;
        fileSize = fileSize / 1048576;
        confirm("Upload file size is :" + fileSize + "Mb")

    } catch (e) {
        alert("Error is:" + e);
    }
}

我用谷歌搜索,发现上面的函数 GetFileSize()

但我不明白这一行:

$("#" + '<%= fileAsyncUpload.ClientID %>')[0].files[0].size;

它如何知道文件大小? 是否加载到浏览器然后检查文件的大小? 或者它检查客户端计算机上的大小?

1 个答案:

答案 0 :(得分:1)

您的GetFileSize功能在浏览器中运行(而不是在IIS服务器上)。这是一个javascript函数,也被视为 client script

当用户选择了要使用<input type=file>元素上传的文件时,浏览器执行了诸如握手操作之类的操作,该操作可让所选文件的属性可读通过浏览器。因此,如果浏览器可以读取大小,那会不会很奇怪,不是吗?

基本上,您的ASP.Net标记将呈现类似这样的内容,但在HTML中并不完全,

<div class="label">
    Select file           
    </div>
        <input type='file' id='ctl00$YourParentControlsOrNot$fileSyncUpload' />
        <input type='submit' id='ctl00$YourParentControlsOrNot$Button1' onclick='GetFileSize()' onsubmit='ctl00$blablabla'>Upload</input>
    </div>
</div>

注意:忽略元素ID,如果您将ClientIDMode设置为AutoID,则会重新分配这些元素ID,否则它看起来像YourParentControl_Button1如果您将其设置为Predictable,则将其设置为Button1

Static

This sample相同的情况。