Я нахожусь в той же лодке и нашел рабочее решение, ЕСЛИ ожидаемый файл загрузки - это изображение. Короче говоря, я обновил элемент управления 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;
}
}
CheckImageSize ищет файл размером менее 3 МБ (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()" />
Обратите внимание, что браузеру требуется секунда, чтобы обновить страницу с миниатюрой, и если пользователь сможет нажать «Сохранить» до загрузки изображения, он получит -1 для размера файла и отобразит ошибку, чтобы снова нажать «Сохранить». , Если вы не хотите отображать изображение, вы можете сделать управление изображением невидимым, и это должно работать. Вам также нужно будет получить копию blank.gif, чтобы страница не загружалась с битой ссылкой на изображение.
Надеюсь, вы найдете это быстро и легко зайти и полезно. Я не уверен, существует ли подобный элемент управления HTML, который можно использовать только для обычных файлов.