8795 sujets

Développement web côté serveur, CMS

Bonjour à tous,

j'ai un formulaire qui télécharge des documents pdf

mon formulaire est bon, mais c'est le reste qui coince Smiley ohwell

mon php simplifié (j'ai tout enlever pour simplifier)



<?php

if (isset($_POST['envoyer']) && $_POST['envoyer']=='Envoyer')
  { 
	$fichier=$_FILES['fichier']['name'];
	$size=$_FILES['fichier']['size'];
	$tmp=$_FILES['fichier']['tmp_name']; 
	$type=$_FILES['fichier']['type']; 

	$conversion = array(' '=>'');
	$fichier = strtr($fichier,$conversion);
 
	echo $fichier,'<br/>';
	echo $type,'<br/>';

  } 

?> 



le problème est le suivant un fichier du format "exemple_deux.pdf" c'est à dire un nom de fichier sans espace, ça fonctionne.

mais avec un fichier du type "exemple trois.pdf" c'est à dire fichier dont le nom comporte des espaces et bien là j'ai rien.

j'ai essayé avec preg_replace et str_replace mais rien n'y fait.

le but supprimer mes espaces dans le nom du fichier.

une solutions ou des solutions ?

merci à vous d'avance
Modifié par flattazor (14 Nov 2009 - 21:51)
Salut,

d'une part le nom du fichier d'origine ne te sert à rien si tu ne renommes pas ou ne déplaces pas le fichier uploadé. D'autre part il n'y a pas que les espaces qui peuvent poser des problèmes.

Tu pourrais essayer ça :
$uploads_dir = 'uploads'; // Nom du répertoire où seront déplacés les fichiers uploadés
$message = array();
$erreur = false;
if(!empty($_FILES['fichier'])) { // Un fichier a été uploadé
	if($_FILES["fichier"]["error"] == UPLOAD_ERR_OK) { // Pas d'erreur durant l'upload
        $tmp_name = $_FILES["fichier"]["tmp_name"];
        $name = $_FILES["fichier"]["name"];
		$name = preg_replace('#[^A-Za-z0-9\.]#', '_', $name); // On remplace tous les caractères qui ne sont pas alphanumériques (ou des points) en underscores _
        if(move_uploaded_file($tmp_name, "$uploads_dir/$name")) { // On déplace le fichier en le renommant
			$message[] = 'Le fichier a bien été téléchargé';
		} else {
			$erreur = true;
			$message[] = 'Erreur survenue durant le déplacement du fichier.';
		}
    } else {
		$erreur = true;
		$message[] = 'Erreur survenue durant le téléchargement du fichier : '.$_FILES["fichier"]["error"];
	}
}

Modifié par Heyoan (29 Nov 2009 - 20:08)
bonsoir heyoan,

merci de ton aide, mais mon problème se trouvait là

fichier > 8M0 donc le serveur retourne une erreur de post et non de fichier.

bonne soirée.
Modifié par flattazor (17 Nov 2009 - 18:59)