PHP / Upload de fichier pdf
Fermé
Jérôme
-
31 mai 2007 à 17:41
becky012 Messages postés 1 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 28 mai 2013 - 28 mai 2013 à 17:14
becky012 Messages postés 1 Date d'inscription mardi 28 mai 2013 Statut Membre Dernière intervention 28 mai 2013 - 28 mai 2013 à 17:14
A voir également:
- Upload pdf php
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Save as pdf - Télécharger - Bureautique
- Télécharger dictionnaire larousse pdf gratuit - Télécharger - Dictionnaires & Langues
- Comment faire un pdf - Guide
- Telecharger pdf creator - Télécharger - PDF
4 réponses
neojick
Messages postés
167
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
30 mars 2009
99
31 mai 2007 à 17:51
31 mai 2007 à 17:51
Cadeau, voilà le script que j'ai bricolé cet aprem pour uploader des fichiers, il fonctionne avec les .pdf
Avec ça ton fichier est copié où il faut, et tu peux récupérer son nom et son extension (je stocke les deux séparement pour un tri plus loin)
Et mon input dans le formulaire se présente ainsi :
<? //Initialisation d'un variable qui autorisera ou non l'enregistrement dans la base $uploaded=0; //Si le fichier a une taille if($fichier_size>0) { //on génère un nombre aléatoire en 0 et 100000 qui sera ajouté à la fin du nom du dossier pour éviter les conflits (deux fichiers avec le même nom) $rename=rand(0,100000); //Répertoire où sera stocké ce fichier (le répertoire doit avoir les droits 0777) $rep= $DOCUMENT_ROOT."societes/dossiers/fichiers/"; //On remplace les éventuels espaces dans le nom du fichier par des underscore $fichier_name = str_replace (" ", "_", $fichier_name); //On remplace les A avec accent par un A normal $a = array("ä", "â", "à"); $fichier_name = str_replace ($a, "a", $fichier_name); //On remplace les E avec accent par un E normal $e = array("é", "è", "ê", "ë"); $fichier_name = str_replace ($e, "e", $fichier_name); //On remplace les I avec accent par un I normal $i = array("ï", "î"); $fichier_name = str_replace ($i, "i", $fichier_name); //On remplace les O avec accent par un O normal $o = array("ö", "ô"); $fichier_name = str_replace ($o, "o", $fichier_name); //On remplace les U avec accent par un U normal $u = array("ù", "û", "ü"); $fichier_name = str_replace ($u, "u", $fichier_name); //On met le nom du fichier dans la variable $newfichier $newfichier=$fichier_name; //on sépare en deux le nom et l'extension list($nom, $ext) = explode(".", $newfichier); //Au nom, on rajoute un underscore et le nombre généré $nom = $nom."_".$rename; //On lui rajoute l'extension pour la copie dans le dossier $savefile= $rep.$nom.".".$ext; //Le fichier est déplacé dans le dossier prévu move_uploaded_file($fichier, $savefile) or die('Impossible de copier le fichier : '.$savefile.mysql_error()); //On passe la variable à 1 $uploaded=1; } //Sinon, si le fichier n'a pas de taille else { //Si pas de taille, la variable reste à zéro pour empêcher l'écriture dans la base $uploaded=0; } ?>
Avec ça ton fichier est copié où il faut, et tu peux récupérer son nom et son extension (je stocke les deux séparement pour un tri plus loin)
Et mon input dans le formulaire se présente ainsi :
<INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=40240000> <input name="fichier" type="file" id="fichier" class="formulaire" value="" size="30">
Bon je confirme, çà ruuules impec !
Les pdf s'ouvrent comme prévu.
Au lieu de simplement :
list($nom, $ext) = explode(".", $newfichier);
Je préfère :
Pour la conversion des caractères accentués, je préconiserai aussi :
Les pdf s'ouvrent comme prévu.
Au lieu de simplement :
list($nom, $ext) = explode(".", $newfichier);
Je préfère :
// Definir la variable du nom du fichier $fichier = $_FILES['titre']['name']; // On recule de 3 caractère le nom du fichier if (substr($fichier, -3) == 'jpg' || substr($fichier, -3) == 'gif' || substr($fichier, -3) == 'png' || substr($fichier, -3) == 'bmp' || substr($fichier, -3) == 'pdf' || substr($fichier, -3) == 'JPG' || substr($fichier, -3) == 'GIF' || substr($fichier, -3) == 'PNG' || substr($fichier, -3) == 'BMP' || substr($fichier, -3) == 'PDF') { $extension = substr($fichier, -3); $nomFichier = substr_replace($fichier, '', -4); } // Idem mais de 4, dans le cas d'un jpeg elseif ((substr($fichier, -4)) == 'jpeg' || (substr($fichier, -4)) == 'JPEG') { $extension = substr($fichier, -4); $nomFichier = substr_replace($fichier, '', -5); } else { echo "Mauvaise extension !"; } // On met en minuscule l'extension (peut causer des soucis d'exploitation des médias) $extension = strtolower($extension); $fichier_name = $nomFichier."_".date().$extension;
Pour la conversion des caractères accentués, je préconiserai aussi :
//On remplace les "espace" par un "tiret" $espace = " "; $fichier_name = str_replace ($espace, "-", $fichier_name); Dans le cas d'une image, vous permettra d'utiliser des fonction getimagesize avec une url.
> $rename=rand(0,100000);
Au lieu d'un nombre aléatoire, autant mettre un " time(); " ça pourra etre util pour avoir en meme temps la date de d'envoi du fichier !
En tout cas merci, je suis venu pour les accents, j'ai ce probleme et vais y remedier avec ta methode !
@++ et encore merci.
Au lieu d'un nombre aléatoire, autant mettre un " time(); " ça pourra etre util pour avoir en meme temps la date de d'envoi du fichier !
En tout cas merci, je suis venu pour les accents, j'ai ce probleme et vais y remedier avec ta methode !
@++ et encore merci.
neojick
Messages postés
167
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
30 mars 2009
99
24 févr. 2008 à 12:47
24 févr. 2008 à 12:47
C'est ce que je fais maintenant, j'utilise un time() comme ça pas de risque de confit.
becky012
Messages postés
1
Date d'inscription
mardi 28 mai 2013
Statut
Membre
Dernière intervention
28 mai 2013
28 mai 2013 à 17:14
28 mai 2013 à 17:14
bonne idee avec la fonction time()! Pour verifier et remplacer les accents ca pourrait etre aussi:
$accents = array('a'=>array('ä', 'â', 'à'),'e'=>array('é', 'è', 'ê', 'ë'),'i'=>array('ï', 'î'),
'o'=>array('ö', 'ô'),'u'=>array('ù', 'û', 'ü'));
foreach($accents as $lettre=>$valeur){
foreach ($valeur as $v) {
$fichier_name=str_replace($v,$lettre,$fichier_name);
}
}
$accents = array('a'=>array('ä', 'â', 'à'),'e'=>array('é', 'è', 'ê', 'ë'),'i'=>array('ï', 'î'),
'o'=>array('ö', 'ô'),'u'=>array('ù', 'û', 'ü'));
foreach($accents as $lettre=>$valeur){
foreach ($valeur as $v) {
$fichier_name=str_replace($v,$lettre,$fichier_name);
}
}