4 votes

Comment déterminer la taille du fichier avant de le télécharger ?

Nous avons donc ce problème. Un utilisateur va télécharger un fichier, et s'il est supérieur à 10MB, la page s'arrête et s'efface, et aucune erreur valable n'est générée pour décrire ce qui s'est passé. Idéalement, nous aimerions examiner la taille du fichier lorsque l'utilisateur choisit le fichier qu'il veut télécharger, mais je ne sais pas si c'est possible. Notre framework est construit avec ASP.NET, VB.NET et Javascript (et ExtJS 3.0), et il fonctionne sous IE.

Comment faire ?

4voto

David Neale Points 8596

Je ne pense pas qu'il y ait un moyen de le faire en utilisant des formulaires HTML standard.

Jetez un coup d'œil à SWFUpload . Cela vous permettra de contrôler la taille du fichier.

3voto

Brian Points 14040

Le code ci-dessous fonctionne dans Firefox et Chrome, mais la vérification est omise dans IE et Opera. Je pense qu'il est nécessaire d'utiliser un ActiveXObject dans IE. Repris et légèrement modifié à partir de aquí .

<script type="text/javascript">
var clicked = false;
function checkSize() {
var node = document.getElementById('file');
var check = node.files[0].fileSize;
if (check > 4096)
{
alert('Your file is too big!');
 return false;
}
}
</script>

<form enctype="multipart/form-data" action="upload_file.php" method="post" class="body">
Select a file: <input type='file' id='file' name='file'>
 <input type='submit' value=' Upload File ' onClick='return checkSize()'> 
</form>

2voto

Marko Points 26030

Vous pouvez définir la limite dans la configuration web, la propriété s'appelle MaxRequestLength.

Définissez-le dans le fichier web.config, dans la section httpRuntime :

<httpRuntime executionTimeout="90" maxRequestLength="4096" /> <-- number of bytes

Il devrait être inséré sous <system.web>

Pour vérifier la taille du fichier, c'est aussi simple que

If txtFileUpload.PostedFile.ContentLength > 1024 Then <-- bytes

1voto

David Murdoch Points 28521

Pouvez-vous utiliser ou avez-vous essayé d'utiliser ActiveXObject ?

Non testé (ne fonctionnera probablement pas dans IE7+)

function checkSize(fileInput, limit){
    if(!window.ActiveXObject){
        return false;
    }
    var oas = new ActiveXObject("Scripting.FileSystemObject"),
        d = fileInput.value,
        e = oas.getFile(d),
        f = e.size;
    return f <= limit; // in bytes
}

0voto

Thomas Kjørnes Points 1360

Vous pouvez essayer swfupload si Flash est une option pour vous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X