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
wewes2013 - 6 sept. 2017 à 22:23
A voir également:
- Move_uploaded_file()
- Move_upload_file - Meilleures réponses
- Move uploaded file in php example - Meilleures réponses
- Easy php - Télécharger - Divers Web & Internet
- Retour a la ligne php ✓ - Forum PHP
- Php natif - Forum PHP
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- Bouton php - Forum PHP
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
27 oct. 2008 à 12:39
je n'y arrive pas, ca ne fonctionne pas :-(
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
27 oct. 2008 à 12:40
mais pourquoi mon upload en javascript ne marche pas ?!
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
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 ?
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
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...
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
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
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+
A+
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
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!
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
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 ?
Comment tu veux que je t'envoi les fichiers, par mail ? ou par un copier coller sur le forum ?
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
27 oct. 2008 à 14:11
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.
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
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
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
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
27 oct. 2008 à 14:24
c bon jonas, tu peux envoyer multiupload.js !
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
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"));
}
//----------------------------------------
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"));
}
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
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...
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
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
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
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
27 oct. 2008 à 15:13
c'est bon pour le mail
Bon travail
Bon travail
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
27 oct. 2008 à 19:11
Un grand merci a briiiiix sans qui on aurait jamais pu s'en sortir... Merci encore !!!
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
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 .
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
21 juil. 2009 à 15:50
Tu pourrais m'envoyer par mail le package stp?, merci beaucoup !
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.
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.