FTP ve PHP kullanarak uzaktaki bir bilgisayardan bir klasörü nasıl yükleyebilirim?PHP kullanarak FTP ile bir klasörün indirilmesi
Ben kullanıcı adı ve şifre ve İNDİRMEMENİZİ klasörü var ...
kopya()?
Bana bildirin, teşekkürler!
FTP ve PHP kullanarak uzaktaki bir bilgisayardan bir klasörü nasıl yükleyebilirim?PHP kullanarak FTP ile bir klasörün indirilmesi
Ben kullanıcı adı ve şifre ve İNDİRMEMENİZİ klasörü var ...
kopya()?
Bana bildirin, teşekkürler!
<?php
$ftp_server = "ftp.example.com";
$conn_id = ftp_connect ($ftp_server)
or die("Couldn't connect to $ftp_server");
$login_result = ftp_login($conn_id, "user", "pass");
if ((!$conn_id) || (!$login_result))
die("FTP Connection Failed");
ftp_sync ("DirectoryToCopy"); // Use "." if you are in the current directory
ftp_close($conn_id);
// ftp_sync - Copy directory and file structure
function ftp_sync ($dir) {
global $conn_id;
if ($dir != ".") {
if (ftp_chdir($conn_id, $dir) == false) {
echo ("Change Dir Failed: $dir<BR>\r\n");
return;
}
if (!(is_dir($dir)))
mkdir($dir);
chdir ($dir);
}
$contents = ftp_nlist($conn_id, ".");
foreach ($contents as $file) {
if ($file == '.' || $file == '..')
continue;
if (@ftp_chdir($conn_id, $file)) {
ftp_chdir ($conn_id, "..");
ftp_sync ($file);
}
else
ftp_get($conn_id, $file, $file, FTP_BINARY);
}
ftp_chdir ($conn_id, "..");
chdir ("..");
}
?>
Kaynak: http://www.php.net/manual/es/function.ftp-get.php#90910
Bu choises sahip :
ftp sarıcı:
$handle = opendir('ftp://user:[email protected]/path/to/dir') || die();
while (false !== ($file = readdir($handle))) {
if(is_file($file)){
$c = file_get_contents($file);
file_put_contents('/local/'.basename($file), $c);
}
}
closedir($handle);
$c = ftp_connect('picasse.com');
ftp_login($c, 'file', 'password');
ftp_chdir($c, '/remote/dir');
$contents = ftp_nlist($c, '-la .');
foreach($contents as $line){
$file = preg_split('@\[email protected]', trim($line));
$name = $file[8];
$size = $file[4];
$mode = $file[0];
if(substr($mode, 0, 1) == '-'){
//file
$fd = fopen('/local/path/'.$name, 'w');
ftp_fget ($c, $fd, $name, FTP_BINARY);
fclose($fd);
}else{
//dir
}
}
kullanımı dış program wget benzeri veya
lftp -c commands_file commands_file gibi bir şey olurdu #: Sadece böyle şeyler yapmak 2 yeni kütüphaneler sunduk
connect user:[email protected]
mget /path/to/remote /path/to/local
yinelemeli uzak SFTP sunucudaki dosyaları ve klasörleri kopyalamak
Ftp::upload_dir($server, $user, $password, $local_path, $remote_path, $port = 22);
İndir uzak FTP sunucusundan bir dizin (remote_dir eğik çizgi indir klasör içeriği ile sona ererse aksi klasörün kendisini indirmek)
Ftp::download_dir($server, $user, $password, $remote_dir, $local_dir,
$ portu = 22); kodu için
işte burada ama küçük uygulamalar fonksiyonları bağımlılıkları için tüm sınıf gerekecektir.
/**
* Download a directory from remote FTP server
*
* If remote_dir ends with a slash download folder content
* otherwise download folder itself
*
* @param string $server
* @param string $user
* @param string $password
* @param string $remote_dir
* @param string $local_dir
* @param int $port
*
* @return bool $downloaded
*
*/
public static function download_dir($server, $user, $password, $remote_dir, $local_dir, $port = 21)
{
$downloaded = false;
try
{
if(is_dir($local_dir) && is_writable($local_dir))
{
if(false !== $cid = Ftp::login($server, $user, $password, $port))
{
# If remote_dir do not ends with/
if(!HString::ends_with($remote_dir, '/'))
{
# Create fisrt level directory on local filesystem
$local_dir = rtrim($local_dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . basename($remote_dir);
mkdir($local_dir);
}
# Remove trailing slash
$local_dir = rtrim($local_dir, DIRECTORY_SEPARATOR);
$downloaded = Ftp::download_all($cid, $remote_dir, $local_dir);
ftp_close($cid);
}
}
else
{
throw new Exception("Local directory does not exist or is not writable", 1);
}
}
catch(Exception $e)
{
error_log("Ftp::download_dir : " . $e->getMessage());
}
return $downloaded;
}
/**
* Recursive function to download remote files
*
* @param ressource $cid
* @param string $remote_dir
* @param string $local_dir
*
* @return bool $download_all
*
*/
private static function download_all($cid, $remote_dir, $local_dir)
{
$download_all = false;
try
{
if(Ftp::is_dir($remote_dir, $cid))
{
$files = ftp_nlist($cid, $remote_dir);
if($files!==false)
{
$to_download = 0;
$downloaded = 0;
# do this for each file in the remote directory
foreach ($files as $file)
{
# To prevent an infinite loop
if ($file != "." && $file != "..")
{
$to_download++;
# do the following if it is a directory
if (Ftp::is_dir($file, $cid))// $remote_dir . DIRECTORY_SEPARATOR .
{
# Create directory on local filesystem
mkdir($local_dir . DIRECTORY_SEPARATOR . basename($file));
# Recursive part
if(Ftp::download_all($cid, $file, $local_dir . DIRECTORY_SEPARATOR . basename($file)))
{
$downloaded++;
}
}
else
{
# Download files
if(ftp_get($cid, $local_dir . DIRECTORY_SEPARATOR . basename($file), $file, FTP_BINARY))
{
$downloaded++;
}
}
}
}
# Check all files and folders have been downloaded
if($to_download===$downloaded)
{
$download_all = true;
}
}
}
}
catch(Exception $e)
{
error_log("Ftp::download_all : " . $e->getMessage());
}
return $download_all;
}
sen http://stackoverflow.com/questions/2803955/how-to-download-folder-from-some-ftp-server-into-your-server-home-directory [bu] (kontrol ettin -ve G). – SIFE