ftp_copy(), ou comment dupliquer une image sur un serveur distant en utilisant php
J'étais assez surpris de découvrir récemment qu'il n'y avait pas de fonction php qui permette facilement de dupliquer une image sur un serveur à partir de FTP. Bien qu'il y ait ftp_rename() , qui "renomme" et donc éventuellement déplace l'image, il n'y a pas de fonction appelé ftp_copy() ftp_clone() ou encore ftp_duplicate() ... bref ça n'existe pas, pour la simple et bonne raison que le protocole ftp ne supporte que quelques commandes et dupliquer un fichier n'est pas une de celles ci. On peut créer un fichier, le déplacer, mais pas le dupliquer, certainement pour des raisons de sécurité....
Parfois on se trouve obligé de dupliquer du contenu d'un serveur distant .par exemple lorsqu'on ouvre un accès FTP au serveur à une personne tierce pour qu'elle y dépose des images, fichiers ou autre. Si jamais on veut pour une raison x ou y dupliquer ces fichiers (et ainsi éviter une perte de document si par exemple la tierce personne fait le ménage sur le répertoire de son ftp) , il faut donc dupliquer le contenu ou le récupérer .
Ma petite fonction que j'ai écrite nécéssite d'avoir un répertoire local ou récupérer au moins temporairement le fichier. En gros, c'est un ftp_get suivi d'un ftp_put . J'avais essayé avec ftp_fget() et ftp_fput() , mais cela ne marche pas car ces deux fonctions nécessitent l'ouverture de pointeurs quasi en même temps, bref ça pète.
bool ftp_copy ( resource $ftp_stream , string $initialpath, string $newpath, string $imagename )
function ftp_copy($conn_distant , $pathftp , $pathftpimg ,$img){
// on recupere l'image puis on la repose dans le nouveau folder
if(ftp_get($conn_distant, TEMPFOLDER.$img, $pathftp.'/'.$img ,FTP_BINARY)){
if(ftp_put($conn_distant, $pathftpimg.'/'.$img ,TEMPFOLDER.$img , FTP_BINARY)){
unlink(TEMPFOLDER.$img) ;
} else{
return false;
}
}else{
return false ;
}
return true ;
}
