Итак, я пытаюсь скопировать файл с моего локального сервера на удаленный сервер с FTP. Проблема в том, что мне нужно сделать это в кусках.PHP - Объединение файлов с FTP
До сих пор, основываясь на моих исследованиях, похоже, что это будет проще всего сделать, создав два файла на моем локальном сервере: скопированный файл и небольшой временный файл, содержащий текущий фрагмент. Тогда я должен просто объединить этот фрагмент с удаленным файлом.
Проблема в том, что у меня возникли проблемы с добавлением файлов. Я не могу понять, как работает протокол ftp://
, и я не могу найти исчерпывающее объяснение того, как это сделать с помощью cURL. Самое близкое, что я нашел, это this, но я не мог заставить его работать.
Ниже приведено то, что я написал до сих пор. Я прокомментировал это, чтобы вы могли просто пропустить его, чтобы получить эту идею, и посмотреть, где я застрял - код не сложный. Что вы рекомендуете мне делать? Как добавить файл на моем локальном сервере файл на удаленном сервере с FTP?
<?php
// FTP credentials
$server = HIDDEN;
$username = HIDDEN;
$password = HIDDEN;
// Connect to FTP
$connection = ftp_connect($server) or die("Failed to connect to <b>$server</b>.");
// Login to FTP
if ([email protected]_login($connection, $username, $password))
{
echo "Failed to login to <b>$server</b> as <b>$username</b>.";
}
// Destination file (where the copied file should go)
$destination = 'final.txt';
// The file on my server that we're copying (in chunks) to $destination.
$read = 'readme.txt';
// Current chunk of $read.
$temp = 'temp.tmp';
// If the file we're trying to copy exists...
if (file_exists($read))
{
// Set a chunk size (this is tiny, but I'm testing
// with tiny files just to make sure it works)
$chunk_size = 4;
// For reading through the file we want to copy to the FTP server.
$read_handle = fopen($read, 'r');
// For writing the chunk to its own file.
$temp_handle = fopen($temp, 'w+');
// Loop through $read until we reach the end of the file.
while (!feof($read_handle))
{
// Read a chunk of the file we're copying.
$chunk = fread($read_handle, $chunk_size);
// Write that chunk to its own file.
fwrite($temp_handle, $chunk);
////////////////////////////////////////////
//// ////
//// NOW WHAT?? HOW DO I ////
//// WRITE/APPEND THAT ////
//// CHUNK TO $destination? ////
//// ////
////////////////////////////////////////////
}
}
fclose($read_handle);
fclose($temp_handle);
ftp_close($ftp_connect);
?>
К сожалению, это не сработает. Он предполагает, что пункт назначения находится на локальном сервере, тогда как мне нужен целевой файл '$ destination' для сохранения на сервере REMOTE. – Nathanael
На самом деле, как 'fopen', так и' fwrite' являются обертками протоколов, и они позволяют вам читать/записывать эти протоколы. –
Как вы проводите различие между местоположениями '$ destination' и' $ read'? Вы справляетесь с ними одинаково. – Nathanael