Je suis dans le même bateau et j'ai trouvé une solution de travail SI votre fichier de téléchargement attendu est une image. En bref, j'ai mis à jour le contrôle ASP.NET FileUpload pour appeler une fonction javascript pour afficher une vignette du fichier sélectionné, puis avant d'appeler le formulaire, puis en vérifiant l'image pour vérifier la taille du fichier. Assez parlé, passons au code.
Javascript, inclure dans la page en-tête
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;
}
}
Le CheckImageSize est à la recherche d'un fichier moins de 3 Mo (3145728), mettre à jour ce à toute valeur dont vous avez besoin.
ASP Code 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()" />
Notez le navigateur prend une seconde pour mettre à jour la page avec la vignette et si l'utilisateur est en mesure de cliquer sur Enregistrer avant l'image est chargée, il recevra un - 1 pour la taille du fichier et afficher l'erreur pour cliquer à nouveau sur Enregistrer. Si vous ne voulez pas afficher l'image, vous pouvez rendre le contrôle de l'image invisible et cela devrait fonctionner. Vous devrez également obtenir une copie de blank.gif afin que la page ne se charge pas avec un lien d'image brisée.
J'espère que vous trouverez cela rapide et facile à déposer et utile. Je ne suis pas sûr s'il existe un contrôle HTML similaire qui pourrait être utilisé uniquement pour les fichiers généraux.
De plus, ce serait '4096 * 1024' pour obtenir le nombre réel d'octets dans 4 Mo. Pas '4000 * 1024'. – mbomb007
@ mbomb007 Vous avez raison. J'ai mis à jour ma réponse. – krlzlx
Juste un rappel: si vous utilisez le nom réel du résultat sera différent.Dans mon cas, il était id = "content_FileUploadControl" –
Lombas