PHP : Move_uploaded_file()

Résolu
jonas001 Messages postés 85 Statut Membre -  
 wewes2013 -
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 Statut Membre 16
 
je n'y arrive pas, ca ne fonctionne pas :-(
0
sethyy Messages postés 32 Statut Membre 16
 
mais pourquoi mon upload en javascript ne marche pas ?!
0
briiiiix Messages postés 624 Statut Membre 18
 
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 Statut Membre 16
 
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 624 Statut Membre 18
 
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 Statut Membre 16
 
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 624 Statut Membre 18
 
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 85 Statut Membre 9
 
Sur le forum stp !!! :-)
Je m'arrache aussi les cheveux dessus depuis un moment sans rien trouver de bon.
0
briiiiix Messages postés 624 Statut Membre 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 Statut Membre 16
 
c bon jonas, tu peux envoyer multiupload.js !
0
briiiiix Messages postés 624 Statut Membre 18
 
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 Statut Membre 16
 
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 624 Statut Membre 18
 
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
marmotte
 
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
Falami
 
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 624 Statut Membre 18
 
c'est bon pour le mail
Bon travail
0
sethyy Messages postés 32 Statut Membre 16
 
Un grand merci a briiiiix sans qui on aurait jamais pu s'en sortir... Merci encore !!!
0
briiiiix Messages postés 624 Statut Membre 18
 
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 Statut Membre
 
Tu pourrais m'envoyer par mail le package stp?, merci beaucoup !
0
jackyc_french
 
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
greg6614
 
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
 
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
le père
 
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