Estoy en el mismo barco y encontré una solución de trabajo SI su archivo de carga esperado es una imagen. En resumen, actualicé el control ASP.NET FileUpload para llamar a una función de JavaScript para mostrar una miniatura del archivo seleccionado, y luego antes de llamar al formulario, luego verifico la imagen para verificar el tamaño del archivo. Basta de hablar, vayamos al código.
Javascript, incluye en la cabecera de la página
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;
}
}
El CheckImageSize está buscando un archivo de menos de 3 Mb (3145728), actualizar este valor a lo que necesita.
ASP HTML Código
<!-- 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()" />
Nota del navegador embargo, toma un segundo para actualizar la página con la imagen en miniatura y si el usuario puede hacer clic en el Guardar antes de que la imagen se carga va a llegar a - 1 para el tamaño del archivo y mostrar el error para hacer clic en guardar de nuevo. Si no desea mostrar la imagen, puede hacer que el control de imagen sea invisible y esto debería funcionar. También necesitarás obtener una copia de blank.gif para que la página no se cargue con un enlace de imagen roto.
Espero que esto le resulte fácil y rápido de visitar. No estoy seguro de si hay un control HTML similar que pueda usarse solo para archivos generales.
Además, sería '4096 * 1024' obtener la cantidad real de bytes en 4 MB. No '4000 * 1024'. – mbomb007
@ mbomb007 Tienes razón. He actualizado mi respuesta. – krlzlx
Solo un recordatorio: si usa , el nombre real del resultado será diferente.En mi caso era id = "content_FileUploadControl" –
Lombas