Uploader des images vers un site

Fermé
diabolo67 Messages postés 9 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 janvier 2007 - 12 août 2005 à 15:40
 siskozed - 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
A voir également:

10 réponses

dedale82 Messages postés 403 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 28 octobre 2008 282
12 août 2005 à 23:27
Soit le repertoire n'existe pas, soit tu n'as pas de permissions en ecriture dessus.
Bonne soiree
1
dedale82 Messages postés 403 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 28 octobre 2008 282
12 août 2005 à 15:42
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
0
diabolo67 Messages postés 9 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 janvier 2007
12 août 2005 à 19:55
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

-1
diabolo67 Messages postés 9 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 janvier 2007
15 août 2005 à 12:20
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
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
diabolo67 Messages postés 9 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 janvier 2007
15 août 2005 à 12:28
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
-1
diabolo67 Messages postés 9 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 janvier 2007
16 août 2005 à 12:23
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
-1
diabolo67 Messages postés 9 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 janvier 2007
16 août 2005 à 17:27
J'en suis toujours au même point personne n'a une petite idée ?

diabolo
-1
StreM Messages postés 515 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 28 février 2007 124
23 août 2005 à 16:40
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...
-1
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 !!
-1
StreM Messages postés 515 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 28 février 2007 124
12 août 2005 à 15:46
$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>
-2