6
votes

Comment copier des fichiers autour de FTP en utilisant php

Je travaille à copier un fichier d'un dossier à un autre à l'aide des fonctions FTP PHP.

E.g

Copiez ce fichier: httpdocs / user_images / services / fichier 1.jpg

à: httpdocs / user_images / dossier11

J'ai essayé d'utiliser ftp_fput mais je n'ai aucune chance avec elle.


3 commentaires

Vous devriez réellement exécuter un serveur FTP pour ce faire fonctionner et avoir des autorisations de lecture / écriture appropriées pour les deux nom d'utilisateur que vous enregistrez dans le serveur FTP avec et l'utilisateur utilise le script PHP. Comme le dit Rockerest, pour copier des fichiers sur la même machine, utilisez simplement la fonction copie () . FTP est destiné aux transferts "externes" entre deux machines distinctes.


Ne pensez pas que c'est un processus d'une étape. Peut avoir besoin de faire un ftp_get puis ftp_put . FTP est-il votre seule option pour accéder au serveur distant?


Oui c'est comme ça que j'essaie de le faire maintenant, mais il ne peut pas trouver le TempFolder


5 Réponses :


1
votes

Sauf si vous déplacez réellement des fichiers entre serveurs ou quelque part que PHP n'a pas accès, utilisez copie () (php) xxx


0 commentaires

8
votes

à partir de la page manuelle sur ftp_put code> sur PHP. NET :

<?php 
// 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 ; 
} 
?>


5 commentaires

Je reçois maintenant l'erreur suivante FTP_GET (tempfolderfile_1.jpg) [ fonction.ftp-get ]: Échec de l'ouverture du flux: autorisation refusée dans


Les informations d'identification de connexion sont-elles valides? Cela télécharge simplement le fichier, puis le télécharge ailleurs. Ce n'est peut-être pas la meilleure solution pour les gros fichiers.


Oui parce que toutes mes autres fonctionnalités fonctionnent bien. Son agissant comme il ne peut pas trouver le tempfolder


C'est parce que vous devez vous donner vous-même. Déclarez un tempoleur constant qui pointe vers un dossier Temp d'écriture.


Maintenant, je reçois une restriction open_basedir en vigueur. Fichier (/httpdocs/temp/file_1.jpg)



1
votes

0 commentaires

11
votes

Peut-être un fait peu connu: la fonction Copy () en PHP peut être utilisée pour copier des fichiers sur un serveur FTP, bien que sans autant de contrôle que vous n'obtenez à l'aide des fonctions spécifiques à FTP.

En d'autres termes, Cela peut faire le travail: xxx

http://php.net/manual/fr/funcunction.copy.php


1 commentaires

J'ai essayé cette méthode, mais pour une raison quelconque, il ne fait que copier une partie du fichier, un peu plus de la moitié. Le fichier copié arrêtera de mi-mot d'environ 500 lignes (c'est un CSV de 800 lignes). Je n'ai pas été capable de comprendre pourquoi.



1
votes

La fonction de copie ne fonctionnera pas. Vous devez utiliser FTP_GET () et FTP_PUT () () pour atteindre cette tâche


0 commentaires