站內搜尋

Thursday, September 12, 2013

[PHP] 如何 跨網域 跨主機 跨server 上傳檔案 (用 FTP 方式)

最基本的上傳方式是
1.使用者把檔案上傳到 web server
2. web server 把上傳的檔案 利用 move_uploaded_file() 函式,將檔案移到指定的資料夾內
注意:move_uploaded_file() 會真的把檔案從 /tmp 搬走,如果後續還會需要針對這個檔案做處理,可以先用 copy() 建立一個副檔,或是把 move_uploaded_file() 放到後面再執行。

但是,有時候我們需要把上傳的檔案放到另一台專門放檔案的 file server,這時候,就無法利用 move_uploaded_file() 去搬移檔案了,而需要利用 ftp 去傳送檔案至 file server,方法很簡單...
直接看程式碼:
$file = $_FILES['file'];
$file_tmp = $file['tmp_name'];
$file_name = $file['name'];
if(is_uploaded_file($file_tmp)){  //確定user有"上傳"檔案 (資安檢查)
    $file_ext = strrchr($file_name,'.');  //上傳檔案的副檔名
    $file_name_new = date('YmdHis').$file_ext;
    $host = '127.0.0.1';
    $port = '21';
    $user = 'admin';
    $pass = '123456';
    $link = ftp_connect($host,$port);
    $login = ftp_login($link,$user,$pass);
    ftp_chdir($link,'filedir');  //切換到要放檔案的資料夾
    if(ftp_put($link,$file_name_new,$file_tmp,FTP_BINARY)){
        $msg = '上傳成功';
    }else{
        $msg = '上傳失敗';
    }
}else{
    $msg = '上傳失敗';
}
ftp_close($link);
echo $msg;

No comments:

Post a Comment