scr*_*789 14 asp.net file-upload
我想在使用asp fileupload组件上传文件之前检查所选的文件大小.我无法使用activex,因为解决方案必须适用于每个浏览器(firefox,Chrome等).
我怎样才能做到这一点 ?
谢谢你的回答..
krl*_*zlx 17
ASPX
<asp:CustomValidator ID="customValidatorUpload" runat="server" ErrorMessage="" ControlToValidate="fileUpload" ClientValidationFunction="setUploadButtonState();" />
<asp:Button ID="button_fileUpload" runat="server" Text="Upload File" OnClick="button_fileUpload_Click" Enabled="false" />
<asp:Label ID="lbl_uploadMessage" runat="server" Text="" />
Run Code Online (Sandbox Code Playgroud)
jQuery的
function setUploadButtonState() {
var maxFileSize = 4194304; // 4MB -> 4 * 1024 * 1024
var fileUpload = $('#fileUpload');
if (fileUpload.val() == '') {
return false;
}
else {
if (fileUpload[0].files[0].size < maxFileSize) {
$('#button_fileUpload').prop('disabled', false);
return true;
}else{
$('#lbl_uploadMessage').text('File too big !')
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您预期的上传文件是图像,我也有同样的情况,并找到了一个可行的解决方案。简而言之,我更新了 ASP.NET FileUpload 控件以调用 JavaScript 函数来显示所选文件的缩略图,然后在调用表单提交之前检查图像以检查文件大小。废话说得够多了,让我们来看看代码吧。
Javascript,包含在页眉中
function ShowThumbnail() {
var aspFileUpload = document.getElementById("FileUpload1");
var errorLabel = document.getElementById("ErrorLabel");
var img = document.getElementById("imgUploadThumbnail");
var fileName = aspFileUpload.value;
var ext = fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();
if (ext == "jpeg" || ext == "jpg" || ext == "png") {
img.src = fileName;
}
else {
img.src = "../Images/blank.gif";
errorLabel.innerHTML = "Invalid image file, must select a *.jpeg, *.jpg, or *.png file.";
}
img.focus();
}
function CheckImageSize() {
var aspFileUpload = document.getElementById("FileUpload1");
var errorLabel = document.getElementById("ErrorLabel");
var img = document.getElementById("imgUploadThumbnail");
var fileName = aspFileUpload.value;
var ext = fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();
if (!(ext == "jpeg" || ext == "jpg" || ext == "png")) {
errorLabel.innerHTML = "Invalid image file, must select a *.jpeg, *.jpg, or *.png file.";
return false;
}
if (img.fileSize == -1) {
errorLabel.innerHTML = "Couldn't load image file size. Please try to save again.";
return false;
}
else if (img.fileSize <= 3145728) {
errorLabel.innerHTML = "";
return true;
}
else {
var fileSize = (img.fileSize / 1048576);
errorLabel.innerHTML = "File is too large, must select file under 3 Mb. File Size: " + fileSize.toFixed(1) + " Mb";
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
CheckImageSize 正在查找小于 3 Mb (3145728) 的文件,请将其更新为您需要的任何值。
ASP HTML 代码
<!-- Insert into existing ASP page -->
<div style="float: right; width: 100px; height: 100px;"><img id="imgUploadThumbnail" alt="Uploaded Thumbnail" src="../Images/blank.gif" style="width: 100px; height: 100px" /></div>
<asp:FileUpload ID="FileUpload1" runat="server" onchange="Javascript: ShowThumbnail();"/>
<br />
<asp:Label ID="ErrorLabel" runat="server" Text=""></asp:Label>
<br />
<asp:Button ID="SaveButton" runat="server" Text="Save" OnClick="SaveButton_Click" Width="70px" OnClientClick="Javascript: return CheckImageSize()" />
Run Code Online (Sandbox Code Playgroud)
请注意,浏览器确实需要一秒钟的时间来使用缩略图更新页面,如果用户能够在加载图像之前单击“保存”,则文件大小将得到 -1,并显示错误以再次单击“保存”。如果您不想显示图像,可以使图像控件不可见,这应该可以工作。您还需要获取空白.gif 的副本,以便页面加载时不会出现损坏的图像链接。
希望您发现此内容快速、简单且有帮助。我不确定是否有类似的 HTML 控件可仅用于一般文件。
| 归档时间: |
|
| 查看次数: |
56587 次 |
| 最近记录: |