1. 程式人生 > >PHP檔案上傳至另一臺伺服器

PHP檔案上傳至另一臺伺服器

PHP程式上傳檔案時,想指定上傳到另一臺伺服器。

move_uploaded_file這個方法第二個引數指定的存放路徑需要和php程式檔案一個伺服器,沒辦法指定其他伺服器的地址,本人才疏學淺,哪位大哥會的還請賜教下。

既然不能這樣實現,肯定有其他辦法的,想著ftp也可以實現檔案傳輸的哇,繼而朝ftp方向入手。

首先,在自己桌上型電腦和筆記本上都開通了ftp,這個不會的同學可以網上查serv-u,相關教程肯定不少的。

然後在臺式機本地做了個測試

    $ftp_server = "192.168.1.100";
    $ftp_user_name = "laohu";
    $ftp_user_pass = "123456";
    $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
    $file = 'test.txt';
    $remote_file = '/test/a.txt';
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

    if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
        echo "檔案移動成功\n";
    } else {
        echo "移動失敗\n";
    }
    ftp_close($conn_id);

執行後:檔案移動成功。

要的就是這個效果了,之後用桌上型電腦做程式伺服器,上傳附件時全用ftp方法上傳至筆記本上,筆記本ip是105,相應程式碼如下:

if (is_uploaded_file($_FILES['uploadfile']['tmp_name'])) {
    $ftp_server = "192.168.1.105";
    $ftp_user_name = "lesley";
    $ftp_user_pass = "123456";
    $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
    $file = $_FILES['uploadfile']['tmp_name'];
    $remote_file = '/test/'.$_FILES['uploadfile']['name'];
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

    if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
        echo "檔案:".$_FILES['uploadfile']['name']."上傳成功\n";
    } else {
        echo "上傳失敗\n";
    }
    ftp_close($conn_id);

對應的前臺頁面程式碼:

<form action="uploadfile.php" method="post" enctype="multipart/form-data">
    <input type="file" name="uploadfile" id="uploadfile" />
    <input type="submit" name="submit" value="submit" />
  </form>

執行後確實成功。

需要注意,在用ftp_put方法時,第四個引數傳送模式,需要用FTP_BINARY(二進位制模式),用FTP_ASCII(文字模式)時,圖片能上傳但無法顯示,其他檔案重新命名、中文亂碼解決、上傳許可權控制等,就不在此提及了