Comment télécharger un fichier via ftp en PHP?
J'ai un formulaire en html parcourir type et un bouton envoyer. J'ai choisi un fichier en utilisant le bouton parcourir et envoyer le formulaire. Sur le formulaire de soumission de code suivant est appelé.
$conn_id="myid";
$conn_id = ftp_connect ( 'server' );
$ftp_user_name="username";
$ftp_user_pass="password";
//login with username and password
$login_result = ftp_login ( $conn_id , $ftp_user_name , $ftp_user_pass );
//check connection
if ((! $conn_id ) || (! $login_result )) {
echo "FTP connection has failed!" ;
exit;
} else {
echo "Connected to for user $ftp_user_name" ;
}
//upload the file
$upload = ftp_put( $conn_id, "images/signatures/" . $fileName , $_FILES['tmp_name'] , FTP_BINARY );
//check upload status
if(!$upload){
echo "FTP upload has failed!" ;
} else {
echo "Successfully Uploaded." ;
}
Mais il produire de l'avertissement suivant:
Warning: ftp_put(): Filename cannot be empty in /var/www/echdp/_ProviderSignature.php on line 70 FTP upload has failed!
Mais quand j'ai coder en dur le chemin de la source dans le code ci-dessus, puis télécharger le fichier sur le serveur:
$upload = ftp_put( $conn_id, "images/signatures/myfile.txt" , "/var/www/images/hello.txt" , FTP_BINARY );
- Êtes-vous certain que votre formulaire html a l'attribut
enctype='multipart/form-data'
? Sinon, le tableau $_FILES ne sera pas peuplé et vous obtiendrez l'erreur que vous voyez.
Vous devez vous connecter pour publier un commentaire.
Exemple de code html avec enctype:
Avez-vous des
enctype
dansForm
tag? Sans l'attribut de votre fichier ne sera pas envoyer.Pour le débogage du tableau $_FILES. Essayez
pour voir si les données sont correctes.
Votre variable:
est utilisé à tort, car la variable $_FILES contiennent des fichiers pas fichier. Par conséquent, vous devriez écrire:
Un coup d'oeil sur l'exemple: http://www.zymic.com/tutorials/php/creating-a-file-upload-form-with-php/
Essayez ceci:
Votre fichier sera téléchargé dans le
/public_html/dir/dir2/dir3/
répertoire de votre domaine.Attention: ne Jamais télécharger un fichier d'index lorsque vous testez cette fonction.
Source: PHP.net
n'est pas le nom de votre fichier. Il est stocké dans:
où inputname est le nom de votre domaine. Également vérifier votre formulaire pour enctype ="multipart/form-data".
Être au courant de tout simplement mettre sur votre serveur, tout ce que l'utilisateur peut envoyer - si il ya un accès à des fichiers téléchargés par http (comme http://yoursite/images/signatures/uploadedfile.xxx) quelqu'un peut mettre .les fichiers php sur votre serveur et de l'exécuter !
Évidemment la variable $_FILES['tmp_name'] ne contient pas le nom de fichier. Essayez
print_r($_FILES)
pour voir ce qu'il contient. Aussi, l'utilisation multipart/form-data comme votre formulaire enctype.