Не удается загрузить на жесткий диск с помощью ftp_get () - PullRequest
0 голосов
/ 24 сентября 2011

Можно ли загрузить на мой жесткий диск (в отличие от моего удаленного сервера), используя PHP ftp_get ? Загрузка с использованием ftp_get () прошла успешно, однако файл, который я скачал с моего удаленного сервера, загружается в каталог моего сценария php. Я не удивлен никакими средствами, но я хотел бы знать, как я могу изменить каталог загрузки в определенном месте на моем жестком диске - скажем, на диске "C: \", например.

Приведенный ниже код взят из php.net, но именно так и настроен мой код:

<?php

// define some variables
$local_file = 'local.rar';
$server_file = 'server.rar';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
    echo "Successfully written to $local_file\n";
} else {
    echo "There was a problem\n";
}

// close the connection
ftp_close($conn_id);

?>

Спасибо за любую помощь,

Evan

1 Ответ

2 голосов
/ 24 сентября 2011

Чтобы загрузить файл локально, ваш PHP-скрипт должен отправить соответствующие заголовки, а затем отобразить содержимое файла. Однако это может произойти, только если вы еще не вызвали какой-либо другой вывод из скрипта PHP (через echo или иным образом). Этот код должен заставить ваш браузер открыть окно сохранения файла или загрузить его в папку по умолчанию.

// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {

    // Don't echo output here...
    //echo "Successfully written to $local_file\n";

    // You've downloaded the file into `$local_file` on your server. 
    // Now send it to the browser:
    header("Content-type: application/x-rar-compressed");

    // Also helps to send Content-length
    header("Content-length: " . filesize($local_file));

    // Dump out the file contents
    echo file_get_contents($local_file);

    // Delete it from the server
    unlink($local_file);

    // Always exit when you're done
    exit();
} else {
    echo "There was a problem\n";
}
...