Je veux vérifier la taille du fichier sélectionné [~ # ~ ~] avant [~ # ~] Téléchargement d'un fichier avec le composant ASP Filedupload. Je ne peux pas utiliser ActiveX car la solution doit fonctionner sur chaque navigateur (Firefox, Chrome, etc.)
Comment puis je faire ça ?
Merci pour vos réponses ..
Ici, je viens sauver la journée! Désolé, j'ai 3 ans de retard mais laissez-moi rassurer tout le monde que cela est tout à fait possible et non difficile à mettre en œuvre! Il vous suffit simplement de sortir le fichier de fichiers téléchargé sur un contrôle pouvant être validé. Vous pouvez le faire avec JavaScript, qui ne nécessitera pas de potevet laid, où comme vous deviez utiliser
FileBytes.Length
vous rencontrerez un message après que l'utilisateur final a sélectionné une image. (C'est-à-dire à l'aide de l'ONCHANGE = "FILE1_ONCHANGE (Ceci);" pour accomplir cela.). Quelle que soit la manière dont vous choisissez de sortir, le développeur est à vous.
Une fois que vous avez FIXESIZE, il vous suffit de le diffuser sur A ASP Control pouvant être validé. (C'est-à-dire une zone de texte), vous pouvez utiliser une expression régulière pour une plage à valider pour votre filtrage.
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ValidationExpression="^([1-9][0-9]{0,5}|[12][0-9]{6}|3(0[0-9]{5}|1([0-3][0-9]{4}|4([0-4][0-9]{3}|5([0-6][0-9]{2}|7([01][0-9]|2[0-8]))))))$" ErrorMessage="File is too large, must select file under 3 Mb." ControlToValidate="Textbox1" runat="server"></asp:RegularExpressionValidator>
Boom! C'est si facile. Assurez-vous d'utiliser le Visibility=Hidden
sur votre ASP Control Pour être validé et non Display=None
car Display=none
apparaîtra sur la page (bien que vous puissiez toujours interagir avec elle à travers le DOM). Et Visibility=Hidden
n'est pas visible, mais l'espace est alloué à la page.
découvrez: http://utilitymill.com/utility/regex_for_range Pour tous vos besoins de gamme de regex!
Pour valider multiple fichiers avec jQuery + asp:CustomValidator
une taille jusqu'à 10 Mo
jQuery :
function upload(sender, args) {
args.IsValid = true;
var maxFileSize = 10 * 1024 * 1024; // 10MB
var CurrentSize = 0;
var fileUpload = $("[id$='fuUpload']");
for (var i = 0; i < fileUpload[0].files.length; i++) {
CurrentSize = CurrentSize + fileUpload[0].files[i].size;
}
args.IsValid = CurrentSize < maxFileSize;
}
ASP :
<asp:FileUpload runat="server" AllowMultiple="true" ID="fuUpload" />
<asp:LinkButton runat="server" Text="Upload" OnClick="btnUpload_Click"
CausesValidation="true" ValidationGroup="vgFileUpload"></asp:LinkButton>
<asp:CustomValidator ControlToValidate="fuUpload" ClientValidationFunction="upload"
runat="server" ErrorMessage="Error!" ValidationGroup="vgFileUpload"/>
Je pense qu'il est possible d'utiliser javascript regarder ici
Je pense que vous ne pouvez pas faire ça. Votre question est similaire à celle-ci: Obtenir FileSize sans utiliser FileSystemObject dans JavaScript
La chose est que ASP.NET est une langue côté serveur afin que vous ne puissiez rien faire avant d'avoir le fichier sur le serveur.
Alors qu'est-ce qui reste est le code côté client (JavaScript, Java applets, flash?) ... Mais vous ne pouvez pas en pure JavaScript et que les autres solutions ne sont pas toujours "portables du navigateur" ou sans tout inconvénient
Vous pouvez le faire en utilisant JavaScript.
Exemple:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Show File Data</title>
<style type='text/css'>
body {
font-family: sans-serif;
}
</style>
<script type='text/javascript'>
function showFileSize() {
var input, file;
if (typeof window.FileReader !== 'function') {
bodyAppend("p", "The file API isn't supported on this browser yet.");
return;
}
input = document.getElementById('fileinput');
if (!input) {
bodyAppend("p", "Um, couldn't find the fileinput element.");
}
else if (!input.files) {
bodyAppend("p", "This browser doesn't seem to support the `files` property of file inputs.");
}
else if (!input.files[0]) {
bodyAppend("p", "Please select a file before clicking 'Load'");
}
else {
file = input.files[0];
bodyAppend("p", "File " + file.name + " is " + file.size + " bytes in size");
}
}
function bodyAppend(tagName, innerHTML) {
var Elm;
Elm = document.createElement(tagName);
Elm.innerHTML = innerHTML;
document.body.appendChild(Elm);
}
</script>
</head>
<body>
<form action='#' onsubmit="return false;">
<input type='file' id='fileinput'>
<input type='button' id='btnLoad' value='Load' onclick='showFileSize();'>
</form>
</body>
</html>
Je vous suggère d'utiliser le plugin/addon de téléchargement de fichier pour jQuery. Vous avez besoin de JQuery qui nécessite uniquement JavaScript et ce plugin: http://bluep.github.io/jquery-file-upload/
C'est un outil puissant qui a la validation de l'image, de la taille et la plupart de ce dont vous avez besoin. Vous devez également avoir une validation du côté serveur et que le côté client puisse être altéré. Ne vérifiant également que l'extension de fichier n'est pas assez bon car il peut être facilement altéré, jetez un coup d'œil à cet article: http://www.aaronstannard.com/post/2011/06/24/how- à la vérification sécurisée-et-validate-image-uploads-in-aspnet-an-aspnet-mvc.aspx
$(document).ready(function () {
"use strict";
//This is the CssClass of the FileUpload control
var fileUploadClass = ".attachmentFileUploader",
//this is the CssClass of my save button
saveButtonClass = ".saveButton",
//this is the CssClass of the label which displays a error if any
isTheFileSizeTooBigClass = ".isTheFileSizeTooBig";
/**
* @desc This function checks to see what size of file the user is attempting to upload.
* It will also display a error and disable/enable the "submit/save" button.
*/
function checkFileSizeBeforeServerAttemptToUpload() {
//my max file size, more exact than 10240000
var maxFileSize = 10485760 // 10MB -> 10000 * 1024
//If the file upload does not exist, lets get outta this function
if ($(fileUploadClass).val() === "") {
//break out of this function because no FileUpload control was found
return false;
}
else {
if ($(fileUploadClass)[0].files[0].size <= maxFileSize) {
//no errors, hide the label that holds the error
$(isTheFileSizeTooBigClass).hide();
//remove the disabled attribute and show the save button
$(saveButtonClass).removeAttr("disabled");
$(saveButtonClass).attr("enabled", "enabled");
} else {
//this sets the error message to a label on the page
$(isTheFileSizeTooBigClass).text("Please upload a file less than 10MB.");
//file size error, show the label that holds the error
$(isTheFileSizeTooBigClass).show();
//remove the enabled attribute and disable the save button
$(saveButtonClass).removeAttr("enabled");
$(saveButtonClass).attr("disabled", "disabled");
}
}
}
//When the file upload control changes, lets execute the function that checks the file size.
$(fileUploadClass).change(function () {
//call our function
checkFileSizeBeforeServerAttemptToUpload();
});
});
n'oubliez pas que vous avez probablement besoin de changer de web.config pour limiter les téléchargements de certaines tailles, car la valeur par défaut est de 4 Mo https://msdn.microsoft.com/en-us/library/e1f13641%28V=VS. 85% 29.aspx
<httpRuntime targetFramework="4.5" maxRequestLength="11264" />