@ventilatornot
php junior

В чем проблема, файл загружаемый мной с ftp сервера всегда приходит пустым, однако открывая его в браузере, я могу видеть информацию?

вот несколько вариантов используемого мной кода для решения этой задачи
$fileSrc = $this->getTmpDir(). self::FILE_NAME;
$handle = fopen($fileSrc, 'w');
$matches = parse_url($connection);
$conn_id = ftp_connect($matches['host']);
$login_result = ftp_login($conn_id, $matches['user']?:"anonymous", $matches['pass']?:"");
if (ftp_fget($conn_id, $handle, $matches['path'], FTP_ASCII, 0)) {
ftp_close($conn_id);
fclose($handle);
return $fileSrc;

} else {
throw new \Exception('Не удалось произвести запись, попробуйте еще раз');
}

еще так пробовал
$fileSrc = $this->getTmpDir(). self::FILE_NAME;
$matches = parse_url($connection);
$curl = curl_init();
$file = fopen($fileSrc, 'w');
$url = $matches['scheme']."://".$matches['host'].$matches['path'];
$user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';

curl_setopt($curl, CURLOPT_URL, $url); #input
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FILE, $file); #output
curl_setopt ($curl, CURLOPT_USERAGENT, $user_agent);
curl_setopt($curl, CURLOPT_USERPWD, $matches['user']?:"anonymous".":".$matches['pass']?:"");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);


curl_exec($curl);
curl_close($curl);
fclose($file);
  • Вопрос задан
  • 381 просмотр
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
Вероятно, проблема с правами доступа к FTP или файлу.
Или по FTP и HTTP разные файлы.

Сделайте echo $connection;, эти данные укажите в любую ftp-программу (например, FileZilla) и скачайте файл вручную.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы