PHP : Move_uploaded_file()

Résolu/Fermé
jonas001 Messages postés 83 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 31 mars 2017 - 12 sept. 2008 à 10:41
 wewes2013 - 6 sept. 2017 à 22:23
Bonjour,

J'essaye de paramétrer un script pour un upload multiple de fichiers. J'aimerais utiliser celui-là : https://olance.developpez.com/articles/web/javascript/multiupload/ que je trouve très esthétique et très pratique.

Seul problème, je n'arrive pas uploader les fichiers ... je me suis aidé de cet article : https://forums.commentcamarche.net/forum/affich-4231288-move-uploaded-file-php, mais je n'arrive toujours pas à trouver la bonne syntaxe, car la fonction Move_uploaded_file() me renvoie toujours FALSE.

Voici ma page en php :

$dossier = '/fichiers/';
foreach($_FILES as $fichier)
{
if(move_uploaded_file($fichier['name'], $dossier.$fichier['name']))
{
echo 'Upload effectué avec succès pour le fichier '.$fichier['name'] '. "<br/>";
}
else
{
echo 'Echec de l\'upload. '. "<br/><br/>";
}
}

Merci de m'indiquer quoi faire, j'ai essayé de multiples syntaxes mais je n'arrive jamais à uploader de fichiers...

Cordialement,

Jonas001
A voir également:

45 réponses

sethyy Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 23 décembre 2009 16
27 oct. 2008 à 12:39
je n'y arrive pas, ca ne fonctionne pas :-(
0
sethyy Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 23 décembre 2009 16
27 oct. 2008 à 12:40
mais pourquoi mon upload en javascript ne marche pas ?!
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
27 oct. 2008 à 13:07
parce que javascript est executé du coté client et peut etre que t'as commis des erreurs, tu me montre ton code pour que je le corriges ?
0
sethyy Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 23 décembre 2009 16
27 oct. 2008 à 13:14
Comme je te le disais, la source se trouve sur le lien suivant : http://olance.ftp-developpez.com/articles/web/javascript/multiupload/fichiers/MultiUpload.zip

Il y a plusieurs fichiers javascript dedans, mais le problème est que le fichiers upload.php n'est pas du tout complet, il ne transfert rien du tout vers le serveur, il affiche un message de confirmation d'upload...
0

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

Posez votre question
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
27 oct. 2008 à 13:41
Ok je viens de le telecharger mais, j'y travailles dessus ce soir si tu n'est pas si pressé
A+
0
sethyy Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 23 décembre 2009 16
27 oct. 2008 à 13:44
Oh tu sais j'peux bien attendre un soir de plus depuis le temps que je m'arrache les cheveux dessus... Merci beaucoup en tout cas!
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
27 oct. 2008 à 14:01
Bon j'ai eu le temps de tester et j'ai du modifier un peu ton fichier multiupload.js pourque ça marche.
Comment tu veux que je t'envoi les fichiers, par mail ? ou par un copier coller sur le forum ?
0
jonas001 Messages postés 83 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 31 mars 2017 9
27 oct. 2008 à 14:11
Sur le forum stp !!! :-)
Je m'arrache aussi les cheveux dessus depuis un moment sans rien trouver de bon.
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
27 oct. 2008 à 14:18
Ok, je commences par te copier le code du fichier upload.php, puis des que tu me confirmes que tu l'as reç, je te copie le code du fichise multiupload.js

Bien sure, c'est un exemple, donc les noms des fichiers destinations sont generiques et les types autorisés sont des jpg, si t'as besoin de modifier, alors vas y, mais attention aux erreurs

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Upload de plusieurs fichiers</title>
</head>
<body>
<?php
if(isset($_POST['uploader'])){
$content_dir = ""; // dossier où sera déplacé le fichier
$i =0;
foreach($_FILES as $fichier)
{
$i ++;
$input_name = "fichier".$i;
$tmp_file = $_FILES[$input_name]['tmp_name'];
if( !is_uploaded_file($tmp_file))
{ echo"File not found";
}else {
// on vérifie maintenant l'extension
$type_file = $_FILES[$input_name]['type'];
if( !strstr($type_file, 'jpeg'))
{ echo"Incompatible file type";
} else {
if( strstr($type_file, 'jpeg')) { $typefichier = ".jpg";}
// on copie le fichier dans le dossier de destination
$destination = rand();
$name_file = $destination.$typefichier;
echo "Fichier $name_file uploadé avec succes<br />";
if( !move_uploaded_file($tmp_file, $content_dir.$name_file) )
{ echo"File upload failed";
} else {
}}}
}
}
?>
</body>
</html>

Dis moi quand tu es prêt pour mettre a jour le dichier js
0
sethyy Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 23 décembre 2009 16
27 oct. 2008 à 14:24
c bon jonas, tu peux envoyer multiupload.js !
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
27 oct. 2008 à 14:51
vas y donc, remplaces tout le contenu de ton fichier et fais ton test, puis reponds moi


//----------------------------------------
var nbrFichiers = 0;

function init()
{
//Création d'un premier input
creerInput();
}

//Fonction renvoyant le nom d'un fichier à partir de son chemin complet
function getFileName(fileName)
{
if (fileName != "") {
if (fileName.match(/^(\\\\|.:)/)) {
var temp = new Array();
temp = fileName.split("\\");
var len = temp.length;
fileName = temp[len-1];
} else {
temp = fileName.split("/");
var len = temp.length;
if(len>0)
fileName = temp[len-1];
}
}
return fileName;
}

function creerInput()
{
//Création de l'élément input
var input = document.createElement("input");
input.type = "file";

//Lorsqu'un fichier est choisi, on ajoute son nom à la liste
input.onchange = function() {
ajouterFichier(this);
}

//Ajout de l'input au document
$("input").appendChild(input);

}

function ajouterFichier(input)
{
if(nbrFichiers == 0)
$("fichiers").removeChild($("fichiers").firstChild);

//Création de la ligne dans la liste des fichiers à uploader
var fichier = document.createElement("p");

//Image de suppression
var image = document.createElement("img");
image.src = "images/suppr.gif";
image.alt = "supprimer";
Element.setStyle(image, {border: "0px", verticalAlign: "top"});

//Lien pour supprimer
var lnk = document.createElement("a");
lnk.href= "#";
lnk.onclick = function () {
supprimerFichier(fichier, input);
}
//Ajout de l'image dans la balise de lien
lnk.appendChild(image);

//Ajout du lien à la ligne de la liste
fichier.appendChild(lnk);

//Ajout du nom du fichier
fichier.appendChild(document.createTextNode(" " + getFileName(input.value)));
Element.setStyle(fichier, {margin: "0", padding: "0"});

//Ajout de l'item à la liste
$("fichiers").appendChild(fichier);
nbrFichiers++;

//Affectation de l'attribut name de l'input
nom_du_fichier = 'fichier'+nbrFichiers
input.name = nom_du_fichier

new Effect.Highlight(fichier, {startcolor: "#7fd9ff", endcolor: "#FFFFFF"});

//Création d'un nouvel input pour un nouveau fichier
Element.hide(input);
creerInput();
}

function supprimerFichier(item, input)
{
//Suppression de l'item dans la liste des fichiers à uploader
new Effect.Fade(item, {afterFinish: function () { finSuppr(item); } });

//Suppression de l'input pour que le fichier supprimé ne soit pas envoyé par le formulaire
$("input").removeChild(input);
}

function finSuppr(item)
{
$("fichiers").removeChild(item);

nbrFichiers--;
if(nbrFichiers == 0)
$("fichiers").appendChild(document.createTextNode("Aucun fichier à uploader"));
}
0
sethyy Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 23 décembre 2009 16
27 oct. 2008 à 14:57
aucun changement, si ce n'est qu'une fois que l'on appuie sur le bouton upload, on est redirigé vers une page blanche...
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
27 oct. 2008 à 15:00
T'as du commetre une erreur, donc je penses que je dois t'envoyer le package par mail, envoi moi un message perso sur le forum contenant ton mail sinon rejoinds moi sur skype j'utilises le même pseudo
0
Bonjour briiiiix,

j'ai testé les scripts que tu as posté sur le forum et moi aussi j'ai une page blanche quand je valide.
Quand je veux afficher le contenu de : $_POST['uploader'] je n'ai rien. Alors je me demande à quoi correspond uploader en fait.

Si tu peux m'aider où m'envoyer par email aussi le package.
Merci beaucoup

Bonne journée
0
Salut!!!

Je sais, je pose ma question un petit tard aussi, mais si tu peux me faire parvenir le même code je t'en remercierai fortement...

andyroddick30@hotmail.fr
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
27 oct. 2008 à 15:13
c'est bon pour le mail
Bon travail
0
sethyy Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 23 décembre 2009 16
27 oct. 2008 à 19:11
Un grand merci a briiiiix sans qui on aurait jamais pu s'en sortir... Merci encore !!!
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
27 oct. 2008 à 20:48
Content de l'apprendre, j'ajoutes juste que pourque le script tourne, il faut que le framework prototype.js soit present, en cas où un des internautes vebut s'en servir .
0
laurita40 Messages postés 1 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 21 juillet 2009
21 juil. 2009 à 15:50
Tu pourrais m'envoyer par mail le package stp?, merci beaucoup !
0
jackyc_french
7 août 2009 à 15:36
Bonjours,
Dites moi, s'il vous plait, pourquoi le code si deçus me retourne une erreur dans move_uploaded_file()? Je me prends la tete pendant plusieurs jours decus, le code me parait correct, mais a chaque fois me retourne les erreurs suivants:
Warning: move_uploaded_file(/home/monsite/photos/laposte_zoom.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP 3.0\www\88888888\11\30.php on line 34

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\Program Files\EasyPHP 3.0\tmp\php5E.tmp' to '/home/monsite/photos/laposte_zoom.jpg' in C:\Program Files\EasyPHP 3.0\www\88888888\11\30.php on line 34



<?php

if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 500000;
$dest_dossier = '/home/monsite/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)
{
echo filesize($_FILES['photo']['tmp_name']);
echo "<br>";
echo $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-1]+)/i', '_', $dest_fichier);
// copie du fichier
echo $_FILES['photo']['tmp_name']."<BR>".$dest_dossier.$dest_fichier;
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
}
}

?>
<html>
<body>
<!-- Erreur ? -->
<?php
if(isset($erreur)){
echo '<p>', $erreur ,'</p>';
}
?>
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
<form method="POST" action="30.php" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<fieldset>
<legend>Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p><label for="photo">Photo :</label><input type="file" name="photo" /></p>
<p><label for="photo_2">Photo 2 :</label><input type="file" name="photo_2" /></p>
<!-- bouton d'envoi -->
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>
</form>
</body>
</html>

Merci d'avance.
Cordialement.
0
Salut je peut le faire en .bat si tu veut mais tout dépend si tu veut envoyer plusieurs fichier ou un seul.
0
jackyc_french
7 août 2009 à 18:26
Non, en .bat, ca m'interesse pas vraiement, car, je préfère le faire en php, car derière il y aura aussi une base de donnés qui sera mise a jours.
0
Bonjour

Unable to move 'C:\Program Files\EasyPHP 3.0\tmp\php5E.tmp' to '/home/monsite/photos/laposte_zoom.jpg'

Es-tu sûr que le dossier /home/monsite/photos/ existe à la racine du lecteur courant ?
Car s'il n'existe pas, il est normal que tu ne puisses pas y copier un fichier.
0