Как загрузить файл с URL через ftp, используя php? - PullRequest
0 голосов
/ 29 ноября 2011

Как загрузить изображение с URL на ftp, используя php?

хочу загрузить изображение с URL в ftp

Например: http://test.com/imagefile.jpg или http://test.com/testvideo.flv

Я хочу, чтобы этот файл загружался через FTP или curl php,

У меня есть пример кода здесь, но он не работает.

Там написано, что файл не найден.

$ftp_server ="ftp.yoursite.com"
$ftp_user ="yoursite user"
$ftp_password = "yoursite pass"
$file_to_upload = "http://test.com/imagefile.png";
$remote_location = "/test";

// set up connection or exit with message
$flink = ftp_connect($ftp_server) or exit("Can't connect to ftp server: $ftp_server");

// login or at least try  
if(ftp_login($flink, $ftp_user, $ftp_password)) {


 // if login successful use ftp_put to upload the file
 // if you upload binary files use mode FTP_BINARY
 if(ftp_put($flink, $remote_location, $file_to_upload, FTP_ASCII)) {

  echo "Success! File is uploaded!";
 } else {
  echo "Can't upload file";

 }
} else {
 echo "Can't login with this user & password";

}

// close the connection
ftp_close($flink);

Кто-нибудь может помочь с этой проблемой? Или кто-нибудь может предложить лучше, чем это? Спасибо! помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2017

Я решил этот случай, сначала прочитав содержимое файла с данного URL, затем сохранив его содержимое во временном файле, а затем используя ftp для загрузки файла.

код:

$config = array(
   'host'    => '',
   'port'     => '',
   'username' => '',
   'password' => ''
);

function init(array $config)
{
    $port = (!empty($config['port']))? intval($config['port']) : 21;
    $resource = ftp_connect($config['host'], $port);
    ftp_login($resource, $config['username'], $config['password']);
    ftp_pasv($resource, true);
    return $resource;
}

function uploadFile(string $url, $resource)
{
    $data = file_get_contents($url);
    $tmpFilename = tempnam('/tmp', rand(10, 100) . '_');
    file_put_contents($tmpFilename, $data);
    ftp_put($resource, '/new_file', $tmpFilename, FTP_BINARY);
    unlink($tmpFilename);
    ftp_close($resource);
}

$resource = init($config);
uploadFile(
    "https://cdn.sstatic.net/Sites/stackoverflow/img/sprites.svg?v=1b3cdae197be",
     $resource
);

Подробнее о загрузке файла с URL-адреса и сохранении файла с другого сервера и создании временного файла -> первый , второй , третий

0 голосов
/ 29 ноября 2011

В основном это как:

$connection = ftp_connect($ftp_server);

$login = ftp_login($connection, $ftp_user, $ftp_password);

if (!$connection || !$login) { die('Connection attempt failed!'); }

$upload = ftp_put($connection, $remote_location, $file_to_upload, FTP_ASCII);

if (!$upload) { echo 'FTP upload failed!'; }

ftp_close($connection); 


//or you could do as :

$upload = copy($source, ‘ftp://user:password@host/path/file‘);

Оба метода работали для меня. Надеюсь, это поможет вам

...