Aller au contenu

Sujets conseillés

Posté

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.

Posté

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).

Posté

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é.

Posté

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

  • 2 semaines plus tard...
Posté
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.

Posté

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

Veuillez vous connecter pour commenter

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



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