VIVEZ LE
FOOTBALL !

Posez votre question Signaler

Uploader des images vers un site

diabolo67 9Messages postés 30 juin 2005Date d'inscription - Dernière réponse le 2 août 2008 à 22:38
Bonjour à tous,

Je recherche un moyen qui permettrai d'uploader des images depuis n'importe quel pc vers un fichier de mon site.

Grâce à un petit script php et une base je devrai pouvoir afficher mes photos sur le site et mettre ce dernier rapidement à jour.

Pour php pas de problème (pour l'instant) c'est du coté upload d'image que je coince un peu. Quel langage de programmation utilisé pour cela , en clair comment faire ?

Si quelqu'un à une idée merci à lui.

diabolo
Lire la suite 

Uploader des images vers un site »

10 réponses
Réponse
+0
moins plus
Salut,
l'upload de fichier peut se faire en php, jette un coup d'oeil la, c'est bien expliqué :
http://www.phpfrance.com/tutoriaux/index.php/2005/04/26/30-lupload-de-fichiers
a plus
Ajouter un commentaire
Réponse
+0
moins plus
$uploaddir = 'photos/';
$uploadfile = $uploaddir . basename($_FILES['Fichier']['name']);

		if (isset ($_FILES['Fichier']['tmp_name']) && $_FILES['Fichier']['tmp_name'] != "none") {  
			if (!file_exists($uploadfile)) {
				if (move_uploaded_file($_FILES['Fichier']['tmp_name'], $uploadfile)) { 
					
	  
					//creation mini
					$src_img = imagecreatefromjpeg($uploadfile);
					$size = GetImageSize($uploadfile);
					$dst_img = imagecreatetruecolor($cote_mini,$cote_mini);
					imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $cote_mini, $cote_mini, $size[0], $size[1]);
					imagejpeg($dst_img, $uploaddir."thumbs/".basename($_FILES['Fichier']['name']), 75);
					imagedestroy($src_img);
					imagedestroy($dst_img); 
					
					//redimensionnement image
					$haut = "500";
					$larg = $size[0]*$haut/$size[1];
					$src_img = imagecreatefromjpeg($uploadfile);
					$size = GetImageSize($uploadfile);
					$dst_img = imagecreatetruecolor($larg,$haut);
					imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $larg, $haut, $size[0], $size[1]);
					imagejpeg($dst_img, $uploadfile, 75);
					imagedestroy($src_img);
					imagedestroy($dst_img);
					
					echo "Fichier envoyé !</body>";
				}
			}
			else
				{echo "<font color=red>Un fichier portant le même nom existe déja.</font>";}
		}

Avec un formulaire comme ca :
<FORM ENCTYPE="multipart/form-data" ACTION="trait_parent.php" METHOD="POST"> 
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="2097152" class=input> 
Titre de la photo :   
<INPUT NAME="titre_tof" TYPE="text" class=input><br>
Fichier : 
<INPUT NAME="Fichier" TYPE="file" class=input>  (max : 2Mo)
<br><br>
<INPUT TYPE="submit" VALUE="Envoyer" name=bouton
onClick="this.form.submit();this.disabled=true;this.value=\'Envoi en cours...\'" class=input>
    </center> 
</FORM>
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour vos réponses,

J'ai commencé par utilisé le script de php france. Mais j'ai déja un petit soucis.

Voici les deux warnings que m'adresse php :

Warning: move_uploaded_file(/brice/photos/ebay1.jpg): failed to open stream: No such file or directory in /home/diapason/www/brice/upload.php on line 33

Warning: move_uploaded_file(): Unable to move '/tmp/phpSoYyAf' to '/brice/photos/ebay1.jpg' in /home/diapason/www/brice/upload.php on line 33




Et voici le code tel que je l'ai trouvé sur le post indiqué par dedale82
<?php
if(isset($_FILES['photo']))
{
  // params
  unset($erreur);
  $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
  $taille_max = 100000;
  $dest_dossier = '/brice/photos/';
  // utilisez également des slashes sous windows : $dest_dossier  = 'd:/damien/photos/';
  // vérifications
  if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
    {    
	$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !'; 
	}  
  elseif( file_exists($_FILES['photo']['tmp_name'])           
         and filesize($_FILES['photo']['tmp_name']) > $taille_max)  
	{    
	$erreur = 'Votre fichier doit faire moins de 500Ko !';  
	}  
	// copie du fichier  
  if(!isset($erreur))  
    {    
	$dest_fichier = basename($_FILES['photo']['name']); 
	// formatage nom fichier   
	// enlever les accents 
	$dest_fichier = strtr($dest_fichier, 
	'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
	'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
	// remplacer les caracteres autres que lettres, chiffres et point par _ 
	$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
	// copie du fichier    
	move_uploaded_file($_FILES['photo']['tmp_name'], 
	$dest_dossier . $dest_fichier);  
	}
}
?>

 Désolé s'il est un peu long.

 Merci pour votre aide.

 diabolo67

Ajouter un commentaire
Réponse
+0
moins plus
Soit le repertoire n'existe pas, soit tu n'as pas de permissions en ecriture dessus.
Bonne soiree
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

J'ai pas très bien compris le fonctionnement du code.
Par exemple
$dest_dossier = '/brice/photos/';

Indique bien l'adresse du dossier qui va recevoir les images ?
Ce dossier existe bien. Comment vérifier que j'ai bien les droits en écritures dessus ?
Et que signifie exactement cette alerte :
Warning: move_uploaded_file(/brice/photos/ebay1.jpg): failed to open stream: No such file or directory in /home/diapason/www/brice/upload.php on line 33


On dirai une erreur en local ? Pourtant je fais le test depuis le site ?
Merci pour vos réponses

diabolo
Ajouter un commentaire
Réponse
+0
moins plus
En utilisant le code de StreM

Voila les erreurs qui s'affichent
Warning: move_uploaded_file(brice/photos/ebay1.jpg): failed to open stream: No such file or directory in /home/diapason/www/brice/trait_parent.php on line 8

Warning: move_uploaded_file(): Unable to move '/tmp/phpeZrSB8' to 'brice/photos/ebay1.jpg' in /home/diapason/www/brice/trait_parent.php on line 8


diabolo
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour ,

J'ai réglé le probleme mon fichier doit avoir l'adresse suivante ../brice/photos.

Je continue sur ma lancé .

Pour permettre à l'administrateur du site de télécharger des photos, d'écrire son texte et de rajouter une mention de prix j'ai crée une page avec un formulaire pour l'ensemble.

Les photos sont uploader dans un dossier et le reste dans ma base.
Voici le code php :

Code:

<?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
$dest_dossier = '../brice/photos/';
// utilisez également des slashes sous windows : $dest_dossier = 'c:/brice/photos/';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// copie du fichier
move_uploaded_file($_FILES['photo']['tmp_name'],
$dest_dossier . $dest_fichier);
}

$host = "***";
$user = "****";
$pass = "*****";
$bdd = "*****";

// connection base de données
@mysql_connect($host, $user, $pass) or die ("Impossible de se connecter à la base de donnée");

//selection de la base
@mysql_select_db($bdd) or die ("Impossible de se connecter à la base");

// Requête modifiée (problème de syntaxe)
$sql=mysql_query("INSERT INTO brice VALUES ('' , '$text', '$prix', )") or die ("Erreur dans la requête ".$sql."<br />".mysql_error());

header("location: confirmationupload.php");

}
?>


J'ai une erreur sql ligne 1 et je vois pas ce que sa peux être.

Merci pour votre aide

diabolo
Ajouter un commentaire
Réponse
+0
moins plus
J'en suis toujours au même point personne n'a une petite idée ?

diabolo
Ajouter un commentaire
Réponse
+0
moins plus
Tu n'arrives pas a te connecter a ta BDD ?
ligne1, tu n'as pas de SQL, tu as que du PHP, alors je comprends pas ton erreur...
Ajouter un commentaire
Réponse
+0
moins plus
si ca arrive à quelqu'un un jour, il sera content de savoir d'ou ca vient :

En fait, il ne créé pas le dossier automatiquement. Il faut le créer manuellement. Avec la fonction

mkdir('./repertoire parent/'.$id.'/', 0777);

mkdir ( 'répertoire', droits ) pour les droits c'est comme sous linux avec le chmod (777 accès total)

voilà apres, ca coule tout seul !!
Ajouter un commentaire
Ce document intitulé « Uploader des images vers un site » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?