Version complète: sur le forum Webmaster Hub : [perl] Contrôle de la taille de fichiers avant upload
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Asp, Java, Cfm, autres.
flashy38
Bonjour,

J'ai un script cgi qui permet d'uploader plusieurs fichiers simultanément à partir d'un formulaire HTML :
CODE
<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
CODE
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.
Kioob
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).
rikew
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é.
Leonick
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
rikew
CITATION(rikew @ vendredi 10 octobre 2008 à 16:04) *
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.
b0b0
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 :
CODE
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
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.