PHP : Move_uploaded_file()
Résolu
jonas001
Messages postés
85
Statut
Membre
-
wewes2013 -
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
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:
- Move_uploaded_file()
- Php move_uploaded_file - Meilleures réponses
- Move_uploaded_file php - Meilleures réponses
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Php alert ✓ - Forum PHP
- Alert php ✓ - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
45 réponses
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 ?
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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!
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 ?
Comment tu veux que je t'envoi les fichiers, par mail ? ou par un copier coller sur le forum ?
Sur le forum stp !!! :-)
Je m'arrache aussi les cheveux dessus depuis un moment sans rien trouver de bon.
Je m'arrache aussi les cheveux dessus depuis un moment sans rien trouver de bon.
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
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
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"));
}
//----------------------------------------
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"));
}
aucun changement, si ce n'est qu'une fois que l'on appuie sur le bouton upload, on est redirigé vers une page blanche...
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
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
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
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 .
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.
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.
Salut je peut le faire en .bat si tu veut mais tout dépend si tu veut envoyer plusieurs fichier ou un seul.