Aller au contenu

[perl] Contrôle de la taille de fichiers avant upload


flashy38

Sujets conseillés

Bonjour,

J'ai un script cgi qui permet d'uploader plusieurs fichiers simultanément à partir d'un formulaire HTML :

<form method="post" action="/cgi-bin/upload.cgi" enctype="multipart/form-data">
<input type="file" name="file1">
<input type="file" name="file2">
<input type="submit" value="Envoyer">
</form>

Je sais comment contrôler la taille totale de tous les fichiers

if ($ENV{'CONTENT_LENGTH'} > $ max_upload_size) {

Je sais également qu'il est possible de tester la taille de chaque fichier après upload, mais ce que je cherche à faire c'est de contrôler la taille de chaque fichier avant de réellement commencer l'upload.

Donc si une bonne âme pouvait me dire si c'est possible de le faire et comment....

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Hello,

peu importe le langage il me semble impossible coté serveur de connaître la taille des données avant qu'elles ne soient envoyées. Le protocole HTTP ne le permet pas en tous cas, étant donné que seule la taille totale est indiquée (ton fameux Content-Length).

Lien vers le commentaire
Partager sur d’autres sites

La seule chose que tu peut obtenir c'est le chemin des fichiers. Tu peut donc controller les extentions des fichiers avant upload.

Pour les photos il est peut être possible de recuperer les dimentions mais je n'ai jamais testé.

Lien vers le commentaire
Partager sur d’autres sites

avec le champ MAX_FILE_SIZE dans le formulaire. Si le navigateur veut bien l'utiliser.

Ce qui n'empêche pas, bien sûr, de vérifier quand même taille et contenu des fichiers

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...
Pour les photos il est peut être possible de recuperer les dimentions mais je n'ai jamais testé.

Alors j'ai testé sur IE ...

il est possible de recuperer les dimentions avec javascript mais uniquement si le script est en local ...

donc ca ne fonctionne pas.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

si je ne dis pas de bêtises, on peut avec un CGI connaitre le montant de données envoyées par POST, et couper l'envoi si celui ci dépasse un certain quota.

ex de code tiré d'un cgi :

my($u_size) = $ENV{'CONTENT_LENGTH'};
if ($u_size > $max_size) {send_error ("Upload too big. Maximum size is $max_size bytes");}

sub send_error {
my $fh;
my $err_msg = shift;
$supress_end_error = 1;
$error = 1;
close (STDIN);
exit;
}

en pensant aider...

b0b0

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...