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'; // 注意:這里的"/test"指的是ftp根目錄下的test文件夾,而非系統跟目錄下的test
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
	echo "文件移動成功";
} else {
	echo "移動失敗";
}
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']."上傳成功";
	} else {
		echo "上傳失敗";
	}
	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(文本模式)時,圖片能上傳但無法顯示,其他文件重命名、中文亂碼解決、上傳權限控制等,就不在此提及了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM