Besoin d'aide ProgressBar lors de l'upload d'un fichier.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Besoin d'aide ProgressBar lors de l'upload d'un fichier.

Re: Besoin d'aide ProgressBar lors de l'upload d'un fichier.

par moogli » 10 déc. 2012, 21:00

salut,

qu'elle version de php ?

<5.4 utilise flash

si php 5.4 utilise session upload progress avec une requête ajax pour l'affichage. Le tout couplé avec la jauge du html 5 ;)


quand ton code, du point de vue php, tu utilise des infos sans être sur qu'elles existent (index de $_POST ou $_FILES par exemple).

Quand au reste c'est relativement masqué par la classe que tu utilse

vire les @ de ton code elles n'ont pas leurs place. S'il y a des erreurs corrige les (par exemple en testant si le fichier / répertoire existe avant de la supprimer).

$media=$_REQUEST["media"];
$upfile=$_FILES[$media]['name'];
$upfile=trim($upfile);

pourquoi utiliser $_REQUEST ? $_POST ne te va pas ? (sais tu qui de l'url ou du formulaire sera pris en premier ?)
trim s'applique sur une chaîne de caractères (cf doc).

Tu peux limiter le nombre de requête, en récupérant plusieurs infos en une requête pour la première, des sous requêtes etc etc).

@+

Besoin d'aide ProgressBar lors de l'upload d'un fichier.

par Melyon » 10 déc. 2012, 20:05

Salut à tous, j'ai un sérieux problème aujourd'hui!

Comme j'ai lancer mon projet YOUPLOAD, j'ai commencer à faire tous le script. Maintenant le problèmes c'est que je suis pas le dieux en PHP ou autres ... Je connais simplement les bases!

Mon problème: J'aimerait pouvoir quand ont clique sur le input="file" ont choisis le fichier ensuite quand ont clique sur Upload j'aimerait que en bas sa affiche un ProgressBar tous simple avec un texte exemple: 54% > 60% > 70% ...

Donc pour ceux qui peuvent m'aidez je l'ai remercie d'avance de [+] j'offre un nom de domaine à la personne qui arrive à m'aidez ( ou même re-moduler le script).

Voici le script de la <form> >

Code : Tout sélectionner

<form action="" method="post" onSubmit="return isUpFormOk(this)" enctype="multipart/form-data" target="result_frame"> <?php if(count($err)>0) { foreach($err as $errmsg) print "<div id='err1'>$errmsg</div>"; ?> <? } ?> <br> <div class="txtbox"> <input name="upfile" style="opacity:0;float:right;" type="file" id="upfile"> </div> <center> <input name="submit" src="images/up.png" style="margin-top:-2px;" type="image" > <a href="./"><img src="images/annul.png" style="margin-top:-2px;"></a> <input name="media" type="hidden" id="media" value="upfile"> </form>
Donc il est très basique surtout pour les input submit j'ai fait sa à la légère.

Voici le code PHP tous en haut de ma page >

Code : Tout sélectionner

<?php require_once("include/vars.php"); require_once("include/db.php"); require_once("include/functions.php"); $qry="SELECT conf_value FROM ".$db->tb("configuration")." WHERE conf_name='AUTO_FILE_DELETE'"; $db->query($qry); $row=$db->getrow(); if($row[0]=="Yes") { $now=time(); $qry="SELECT dir, file_name FROM ".$db->tb("fileinfo")." WHERE expire_time<$now"; $db->query($qry); while($row=$db->getrow()) { @unlink("uploads/".$row[1]."/".$row[2]); @rmdir("uploads/".$row[1]); } $qry="DELETE FROM ".$db->tb("fileinfo")." WHERE expire_time<$now"; $db->query($qry); } $err=array(); if(count($_POST)>0) { $media=$_REQUEST["media"]; $upfile=$_FILES[$media]['name']; $upfile=trim($upfile); if(empty($upfile)) $err[]="Vous n'avez pas entrer de fichiers"; if(count($err)==0) { $qry="SELECT conf_value FROM ".$db->tb("configuration")." WHERE conf_name='MAX_SIZE'"; $db->query($qry); $row=$db->getrow(); $sizelmt=((int)$row[0])*1000; $qry="SELECT conf_value FROM ".$db->tb("configuration")." WHERE conf_name='MIME_TYPES'"; $db->query($qry); $row=$db->getrow(); if($row[0]=="") $mimearr=""; else $mimearr=explode(",",$row[0]); require_once("include/uploader.php"); do { $key=getRanID(20); $qry="SELECT COUNT(*) FROM ".$db->tb("fileinfo")." WHERE idkey='$key'"; $db->query($qry); $row=$db->getrow(); }while($row[0]); do { $dirkey=getRanID(20); $qry="SELECT COUNT(*) FROM ".$db->tb("fileinfo")." WHERE dir='$dirkey'"; $db->query($qry); $row=$db->getrow(); }while($row[0]); mkdir("uploads/$dirkey"); chmod("uploads/$dirkey",0777); $uploader = new MediaUploader("uploads/$dirkey", $mimearr, $sizelmt); //$uploader->setTargetFileName($row[0].".jpg"); if ($uploader->fetchMedia($media)) { if(!$uploader->upload()) { rmdir("uploads/$dirkey"); $err[] = $uploader->getErrors(); } } else { rmdir("uploads/$dirkey"); $err[]=sprintf("Echec du chargement '%s'", $upfile); } if(count($err)==0) { $qry="SELECT conf_optional, conf_value FROM ".$db->tb("configuration")." WHERE conf_name='MAX_TIME'"; $db->query($qry); $row=$db->getrow(); $maxtime=$row[0]; $maxtimeval=$row[1]; $qry="SELECT conf_optional, conf_value FROM ".$db->tb("configuration")." WHERE conf_name='MAX_COUNT'"; $db->query($qry); $row=$db->getrow(); $maxcount=$row[0]; $maxcountval=$row[1]; $qry="INSERT INTO ".$db->tb("fileinfo")."(idkey,dir,mime_type,file_name,size,upload_time,expire_time,max_dwnld,recipient,sender) VALUES('$key','$dirkey','".$uploader->getMediaType()."','".$uploader->getSavedFileName()."',".$uploader->getMediaSize().",".time().",".(time()+($maxtimeval*86400)).",".$maxcountval.",'$emailto','$emailfrom')"; $db->query($qry); $newid=$db->get_insert_id(); $qry="SELECT conf_optional FROM ".$db->tb("configuration")." WHERE conf_name='DAILY_TRANSFER'"; $db->query($qry); $row=$db->getrow(); if($row[0]==date("d-m-Y")) $qry="UPDATE ".$db->tb("configuration")." SET conf_value=conf_value+".$uploader->getMediaSize()." WHERE conf_name='DAILY_TRANSFER'"; else $qry="UPDATE ".$db->tb("configuration")." SET conf_value=".$uploader->getMediaSize().", conf_optional='".date("d-m-Y")."' WHERE conf_name='DAILY_TRANSFER'"; $db->query($qry); //print date("Y-m-d H:i:s"); redirect("success.php?id=$newid"); } } } $qry="SELECT conf_optional FROM ".$db->tb("configuration")." WHERE conf_name='MAX_SIZE'"; $db->query($qry); $row=$db->getrow(); $maxsize=$row[0]; ?>
Si quelq'un peux me re-moduler le script en y ajoutant le progressbar etc ... JE LUI OFFRE NOM DE DOMAINE AU CHOIX! ( POUR LE PREMIER )
Merci de m'aider au plus vite!