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(文字模式)時,圖片能上傳但無法顯示,其他檔案重新命名、中文亂碼解決、上傳許可權控制等,就不在此提及了