Déplacer un fichier d'un dossier1 -> dossier2
Résolu
necro27
Messages postés
160
Date d'inscription
Statut
Membre
Dernière intervention
-
necro27 Messages postés 160 Date d'inscription Statut Membre Dernière intervention -
necro27 Messages postés 160 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Déplacer un fichier d'un dossier1 -> dossier2
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier bin - Guide
- Déplacer colonne excel - Guide
- Fichier rar - Guide
3 réponses
Je dirais que le problème viens du fait qu'il ne doit pas trouver ton fichier1 pour le copier, essaye avec le chemin complet vers le fichier, du genre
copy("chemin vers dossier1/dossier1/$fichier1","chemin vers dossier2/dossier2/$fichier2")
Parfait !!
En fait j'avais testé déjà de mettre les "dossier1/" dans les variables par défault, mais cela ne fonctionnais pas car en effet j'avais mis un if au lieu du while..aller savoir pourquoi. :/
Mais merci beaucoup je ne pense pas que j'aurais réessayé sans ta réponse.
Ceci dit j'ai du apporter une autre modification je remet le morceau de code pour mieux illustrer
Code modifié (en gras ci-dessus):
Par contre :/ petit souci je cherche en parallèle, si jamais tu connais déjà la réponse..
Voici le message d'erreur :
Warning: copy(photos/Thumbs.db) [function.copy]: failed to open stream: Permission denied in ..\upload.php on line 16
déplacement du fichier Thumbs.db raté déplacement réussi
Ligne 16 -->
La je bûche...
En fait j'avais testé déjà de mettre les "dossier1/" dans les variables par défault, mais cela ne fonctionnais pas car en effet j'avais mis un if au lieu du while..aller savoir pourquoi. :/
Mais merci beaucoup je ne pense pas que j'aurais réessayé sans ta réponse.
Ceci dit j'ai du apporter une autre modification je remet le morceau de code pour mieux illustrer
$dossier1=opendir('dossier1/'); while($fichier = readdir($dossier1)) { $fichier1 = "$fichier"; $fichier2 = "$fichier.bak"; $dossier2=opendir('photos/'); if (copy($fichier1, $fichier2)) { echo "déplacement réussi"; } else { echo "déplacement du fichier $fichier1 raté"; } }
Code modifié (en gras ci-dessus):
$dossier1=opendir('dossier1/'); while($fichier = readdir($dossier1)) { $fichier1 = "$fichier"; $dossier2=opendir('dossier2/'); if (copy("dossier1/".$fichier1, "dossier2/".$fichier1)) { echo "déplacement réussi"; } else { echo "déplacement du fichier $fichier1 raté"; } }
Par contre :/ petit souci je cherche en parallèle, si jamais tu connais déjà la réponse..
Voici le message d'erreur :
Warning: copy(photos/Thumbs.db) [function.copy]: failed to open stream: Permission denied in ..\upload.php on line 16
déplacement du fichier Thumbs.db raté déplacement réussi
Ligne 16 -->
if (copy("dossier1/".$fichier1, "dossier2/".$fichier1))
La je bûche...
Bon voilà post complet, j'avais oublié pas mal de choses désolé, donc je l'ai modifié plusieurs fois, la c'est bon j'y retouche plus.
ça m'apprendra à ne pas faire prévisualiser :/
une autre modif :/ je précise pour l'erreur que le dossier photos est en fait le dossier 2..que j'ai renommé ainsi pour faire plus simple mais oublié de modifier partout
ça m'apprendra à ne pas faire prévisualiser :/
une autre modif :/ je précise pour l'erreur que le dossier photos est en fait le dossier 2..que j'ai renommé ainsi pour faire plus simple mais oublié de modifier partout
j'ai trouvé d'où vient l'erreur, en fait elle s'affiche lorsque le fichier a été déplacé.
J'ai l'impression en fait qu'une fois le fichier déplacé, la variable $fichier se vide et contient donc la valeur Thumbs.db.. Et en repassant dessus, par la boucle while, il n'arrive pas à copier ou je ne sais quoi.
Et la je ne vois pas quoi supprimer
Voici le code actuel
$dossier1=opendir('dossier1/');
while ($fichier = readdir($dossier1))
{
if ($fichier != "." && $fichier != "..")
{
echo $fichier;
if (copy("dossier1/".$fichier, "dossier2/".$fichier))
{
echo "déplacement réussi";
}
else
{
echo "déplacement du fichier $fichier raté";
}
}
}
fleur.jpgdéplacement réussiThumbs.db
Warning: copy(dossier2/Thumbs.db) [function.copy]: failed to open stream: Permission denied in ..\upload.php on line 15
déplacement du fichier Thumbs.db raté
J'ai l'impression en fait qu'une fois le fichier déplacé, la variable $fichier se vide et contient donc la valeur Thumbs.db.. Et en repassant dessus, par la boucle while, il n'arrive pas à copier ou je ne sais quoi.
Et la je ne vois pas quoi supprimer
Voici le code actuel
$dossier1=opendir('dossier1/');
while ($fichier = readdir($dossier1))
{
if ($fichier != "." && $fichier != "..")
{
echo $fichier;
if (copy("dossier1/".$fichier, "dossier2/".$fichier))
{
echo "déplacement réussi";
}
else
{
echo "déplacement du fichier $fichier raté";
}
}
}
fleur.jpgdéplacement réussiThumbs.db
Warning: copy(dossier2/Thumbs.db) [function.copy]: failed to open stream: Permission denied in ..\upload.php on line 15
déplacement du fichier Thumbs.db raté
c'est bon j'ai trouvé la solution, elle fonctionne parfaitement.
Il suffit d'ajouter dans la structure conditionnelle un élément.
Voici le code donc au final fonctionnel
$dossier1=opendir('dossier1/');
while ($fichier = readdir($dossier1))
{
if ($fichier != "." && $fichier != ".." && $fichier != "Thumbs.db")
{
if (copy("dossier1/".$fichier, "dossier2/".$fichier))
{
echo "déplacement réussi";
}
else
{
echo "déplacement du fichier $fichier raté";
}
}
}
Il suffit d'ajouter dans la structure conditionnelle un élément.
Voici le code donc au final fonctionnel
$dossier1=opendir('dossier1/');
while ($fichier = readdir($dossier1))
{
if ($fichier != "." && $fichier != ".." && $fichier != "Thumbs.db")
{
if (copy("dossier1/".$fichier, "dossier2/".$fichier))
{
echo "déplacement réussi";
}
else
{
echo "déplacement du fichier $fichier raté";
}
}
}
heu c'est peut être bête mais si tu copies chaque fois le fichier dans les 2 dossiers, pourquoi tu répètes pas directement la fonction:
Sinon pour ta dernière erreur, il te dit "Permission denied", ce qui signifie que tu n'as pas les droits pour modifier, déplacer... ce fichier. Essaies de le faire en tant que root/administrateur, ou de modifier les droits du fichier (tu peux les voir avec ls - l si tu es sous Mac ou Linux)
if(move_uploaded_file($_FILES['foto']['tmp_name'],"dossier1/".$_FILES['foto']['name'])) if(move_uploaded_file($_FILES['foto']['tmp_name'],"dossier2/".$_FILES['foto']['name']))
Sinon pour ta dernière erreur, il te dit "Permission denied", ce qui signifie que tu n'as pas les droits pour modifier, déplacer... ce fichier. Essaies de le faire en tant que root/administrateur, ou de modifier les droits du fichier (tu peux les voir avec ls - l si tu es sous Mac ou Linux)
Bonjour 6ril,
En fait voilà ce que je fais :
-> je copie le fichier dans le dossier 1.
-> je copie, du dossier 1, le fichier dans le dossier 2.
-> je supprime le fichier dans le dossier 1.
La façon dont je l'ai fait est ce que je pense être le plus rapide pour ce que j'exécute. je me comprend, ^^
En fait je dispose de 3 pages qui traitent les informations au fur et à mesure que je change de page
page 1 --> récupérer fichier (via formulaire)
page 2 --> le copier dans le dossier 1
page 3 --> copier le fichier dans le dossier 2 puis le supprimer dans le dossier 1
Sinon je ne suis que simple stagiaire, je n'ai pas les droits forcément nécessaire. Cependant, de mon coté je n'ai aucun souci pour copier coller, etc mes dossiers éventuels lorsque je le fait de façon manuelle.
Pourquoi par le code cela serait-il un souci ?
Merci sinon pour ton attention sur le sujet.
Necro27
En fait voilà ce que je fais :
-> je copie le fichier dans le dossier 1.
-> je copie, du dossier 1, le fichier dans le dossier 2.
-> je supprime le fichier dans le dossier 1.
La façon dont je l'ai fait est ce que je pense être le plus rapide pour ce que j'exécute. je me comprend, ^^
En fait je dispose de 3 pages qui traitent les informations au fur et à mesure que je change de page
page 1 --> récupérer fichier (via formulaire)
page 2 --> le copier dans le dossier 1
page 3 --> copier le fichier dans le dossier 2 puis le supprimer dans le dossier 1
Sinon je ne suis que simple stagiaire, je n'ai pas les droits forcément nécessaire. Cependant, de mon coté je n'ai aucun souci pour copier coller, etc mes dossiers éventuels lorsque je le fait de façon manuelle.
Pourquoi par le code cela serait-il un souci ?
Merci sinon pour ton attention sur le sujet.
Necro27
Le problème de droit peut venir du fait de l'écriture.
Si tu crées un fichier, il est normale que tu puisses en faire ce que tu en veux. Par contre, si tu crées des fichiers, il est parfois possible que tu n'aies pas les droits.
Avec la commande "chmod 777 ton_fichier", tu donnes tous les droits à tous les utilisateurs. Ensuite, réessaye pour voir si le problème est résolu
Si tu crées un fichier, il est normale que tu puisses en faire ce que tu en veux. Par contre, si tu crées des fichiers, il est parfois possible que tu n'aies pas les droits.
Avec la commande "chmod 777 ton_fichier", tu donnes tous les droits à tous les utilisateurs. Ensuite, réessaye pour voir si le problème est résolu