我是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;
它如何知道文件大小? 是否加载到浏览器然后检查文件的大小? 或者它检查客户端计算机上的大小?
答案 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相同的情况。