rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

PHP / Upload de fichier pdf

Posté par Jérôme, le jeudi 31 mai 2007 à 17:41:46
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\">&q­uot;;


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
Répondre à Jérôme  Signaler ce message aux modérateurs Aller au dernier message

1


  • 2
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
neojick, le jeudi 31 mai 2007 à 17:51:35
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mik, le vendredi 22 février 2008 à 18:14:49
> $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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 neojick, le dimanche 24 février 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mik, le samedi 23 février 2008 à 16:57:03
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
Logiciels pertinents trouvés dans les téléchargements
Télécharger PDF Creator 0.9.5PDF Creator - PDF Creator est un outil gratuit permettant de créer des PDF à partir de presque n'importe quelle application capable...Catégorie: PDF
Licence: Open Source
Télécharger Image Resizer 1Image Resizer - Petit utilitaire (PowerToy) basique, très simple, permettant de réduire la taille d'une image, dans le but, notamment, de...Catégorie: Graphisme
Licence: Freeware/gratuit
Télécharger PDFtoHTML 0.39PDFtoHTML - PDFToHTML (PDF2HTML) est une application en ligne de commande permettant de convertir des fichiers PDF au format HTML. Le...Catégorie: PDF
Licence: Freeware/gratuit
Télécharger PDF SaM (Split and Merge) 0.6sr3 PDF SaM (Split and Merge) - PDFsam est un outil de fusion et de coupure de fichiers PDF. C'est une application open source désignée pour prendre en main...Catégorie: PDF
Licence: Open Source
Plus de logiciels gratuits sur « PHP / Upload de fichier pdf »