Rechercher : dans
Par :

PHP / Upload de fichier pdf

Dernière réponse le 24 fév 2008 à 12:47:15 Jérôme, le 31 mai 2007 à 17:41:46 
 Signaler ce message aux modérateurs

Bonjour à tous,

j'ai besoin de réaliser l'upload d'un fichier pdf via un formulaire html.
J'utilise pour cela un formulaire de type :

<form method=\"POST\" name=\"formulaire\" enctype=\"multipart/form-data\" action=\"traitement_telechargement_bat.php\">";


Je récupère les infos grâce à $HTTP_POST_FILES où je teste le type de fichier et le copie dans le répertoire de destination.

Tout fonctionne très bien avec un fichier image mais impossible d'uploader un fichier pdf.
J'arrive à récupérer le nom du fichier en faisant $HTTP_POST_FILES['fichier']['name'] mais par contre lorsque j'essaye de le copier ou de même de savoir son type mime, j'ai rien !!!

Ya t'il quelqu'un qui a déjà rentrer ce problème ... Ya t'il une modif à faire au niveau de la config serveur pour uploader des pdf ????
Là, je ne sais vraiment plus ...

Merci d'avance
Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « PHP / Upload de fichier pdf » dans :
[PHP] Upload de fichiers Voir Le langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Créer un fichier PDF VoirUn fichier PDF (abréviation de Portable Document Format) est un document pouvant contenir texte, dessins, images noir et blanc, en couleur ou en 3D, photos et éventuellement des fonctions de traitement. Le format PDF est un format ouvert,...
Réunir plusieurs fichiers PDF en un seul VoirPour réunir plusieurs fichiers PDF en un seul, on peut utiliser PDFCreator (gratuit) qui s'utilise comme une imprimante. Pour ce faire : Ouvrir tous les fichiers PDF que l'on veut réunir Puis, pour le premier fichier, faire Fichier/Imprimer,...
Publier un fichier PDF sur son site VoirSommaire: Publier un PDF sur son site Conseils Afficher un PDF intégré à une page Téléchargement Convertir un PDF en SWF (Flash) Publier le SWF Astuces et conseils Publier un PDF sur son site Publier un fichier PDF en ligne est en...
Fichier PDF VoirFormat PDF Un fichier PDF (abréviation de Portable Document Format) est un document documents pouvant contenir texte, dessins, images noir et blanc, en couleur ou en 3D, photos et éventuellement des fonctions de traitement. Le format PDF est un...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

neojick, le 31 mai 2007 à 17:51:35
  • +4

Cadeau, voilà le script que j'ai bricolé cet aprem pour uploader des fichiers, il fonctionne avec les .pdf


<?
//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">

Répondre à neojick

2

mik, le 22 fév 2008 à 18:14:49
  • +1

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

Répondre à mik

4

 neojick, le 24 fév 2008 à 12:47:15

C'est ce que je fais maintenant, j'utilise un time() comme ça pas de risque de confit.


Pluie en septembre, route mouillée

Répondre à neojick

3

mik, le 23 fév 2008 à 16:57:03
  • +1

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 :

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

Répondre à mik