本文目錄一覽:
北大青鳥設計培訓:用PHP控制FTP文件上傳?
利用PHP,你總是可以有多種方式來完成某個特定的任務。
我們就拿文件上傳舉個例子。
當然了,你可以按照傳統的方式來使用HTTP文件上傳,把文件直接傳輸到Web服務器磁盤上。
青島電腦培訓認為你還可以用更加奇異的方式上傳,用FTP協議兩步就完成上傳:從你的本地硬盤到Web服務器,然後再到FTP服務器。
PHP在本機同時支持FTP和HTTP上傳,所以你可以根據自己應用程序的設計需要進行最佳的選擇。
使用PHP的FTP函數進行文件傳輸幾乎與使用傳統的FTP客戶端相同——你會看到連函數的名字都和標準的FTP命令類似。
關於HTTP文件上傳的文章已經多得滿天飛了,這就是為什麼本文有必要把注意力放在基於FTP的文件上傳上了(但是在後面給出的例子中,兩種方式你都會看到)。
要注意的是,本教程假設你已經安裝好了PHP/Apache,而且HTTP文件上傳和FTP的函數都已經激活了。
第一步:確信你擁有連接/上傳到FTP服務器的權限PHP的FTP函數需要客戶端-服務器連接,所以你需要在進行文件上傳之前登錄到目標服務器上。
你的第一項任務是確信你已經擁有了完成這項任務的信任書。
這一步可能看起來是理所當然的,但是你會驚奇地發現有多少開發人員忘了這麼做,結果後來浪費大量的時間來解決因此而出現的問題。
怎麼通過PHP來支持FTP和HTTP上傳
給你一些 php 操作 ftp 的函數:
FTP 函數
ftp_alloc — 為要上傳的文件分配空間
ftp_cdup — 切換到當前目錄的父目錄
ftp_chdir — 在 FTP 服務器上改變當前目錄
ftp_chmod — 設置 FTP 服務器上的文件權限
ftp_close — 關閉一個 FTP 連接
ftp_connect — 建立一個新的 FTP 連接
ftp_delete — 刪除 FTP 服務器上的一個文件
ftp_exec — 請求運行一條 FTP 命令
ftp_fget — 從 FTP 服務器上下載一個文件並保存到本地一個已經打開的文件中
ftp_fput — 上傳一個已經打開的文件到 FTP 服務器
ftp_get_option — 返回當前 FTP 連接的各種不同的選項設置
ftp_get — 從 FTP 服務器上下載一個文件
ftp_login — 登錄 FTP 服務器
ftp_mdtm — 返回指定文件的最後修改時間
ftp_mkdir — 建立新目錄
ftp_nb_continue — 連續獲取/發送文件(non-blocking)
ftp_nb_fget — 從 FTP 服務器獲取文件並寫入到一個打開的文件(非阻塞)
ftp_nb_fput — 將文件存儲到 FTP 服務器 (非阻塞)
ftp_nb_get — 從 FTP 服務器上獲取文件並寫入本地文件(non-blocking)
ftp_nb_put — 存儲一個文件至 FTP 服務器(non-blocking)
ftp_nlist — 返回給定目錄的文件列表
ftp_pasv — 返回當前 FTP 被動模式是否打開
ftp_put — 上傳文件到 FTP 服務器
ftp_pwd — 返回當前目錄名
ftp_quit — ftp_close 的 別名
ftp_raw — 向 FTP 服務器發送命令
ftp_rawlist — 返回指定目錄下文件的詳細列表
ftp_rename — 更改 FTP 服務器上的文件或目錄名
ftp_rmdir — 刪除 FTP 服務器上的一個目錄
ftp_set_option — 設置各種 FTP 運行時選項
ftp_site — 向服務器發送 SITE 命令
ftp_size — 返回指定文件的大小
ftp_ssl_connect — 打開 SSL-FTP 連接
ftp_systype — 返回遠程 FTP 服務器的操作系統類型
例子:
?php
$ftp_server=””;
$ftp_user_name=””;
$ftp_user_pass=””;
$file = “”;//tobe uploaded
$remote_file = “”;
// 簡歷ftp鏈接
$conn_id = ftp_connect($ftp_server);
// 使用用戶名和密碼登錄
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// 上傳文件
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo “成功上傳文件: $file\n”;
exit;
} else {
echo “上傳文件錯誤: $file\n”;
exit;
}
// 關閉ftp鏈接
ftp_close($conn_id);
如何使用php中ftp函數上傳文件以及解決上傳文件失敗的方法
一、 ftp上傳圖片參數說明。
1 $source:本機圖片完整的路徑。(/a/b/c.jpg)
2 $des :上傳目標linux主機完整的路徑。
3 $ftp_server:ftp地址
4 $ftp_user_name:ftp用戶名
5 $ftp_user_pass: ftp密碼
6 $port:端口
二、如何使用php中ftp函數上傳文件的方法
例如:
本地地址為:/a/b/c.jpg
目標地址為:/d/a/b/c.jpg
2.1、linux主機上傳linux主機。
01 function ftpSendFile($source,$des,$ftp_server,$ftp_user_name,$ftp_user_pass,$port)
02 {
03 // 此步驟是在於上傳目錄與本機的目錄不一致轉換使用
04 $des = “/d” . $des;
05 $conn_id = ftp_connect($ftp_server, $port) or die(“Couldn’t connect to $ftp_server”);
06 $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
07 ftp_pasv($conn_id, TRUE);
08 $ftp_folder = dirname($des);
09 $dir = explode(“/”, $ftp_folder);
10 $path = “”;
11 for ($i = 0; $i count($dir); $i++) {
12 $path .= “/” . $dir[$i];
13 if (!ftp_chdir($conn_id, $path)) {
14 $result = ftp_mkdir($conn_id, $path);
15 }
16 }
17 if (ftp_put($conn_id, $des, $source, FTP_BINARY)) {
18 return 1;
19 } else {
20 return 0;
21 }
22 ftp_close($conn_id);
23 }
2.2、windows主機上傳linux主機。
01 function sendPic($source,$des,$ftp_server,$ftp_user_name,$ftp_user_pass,$port)
02 {
03 $des = “/d” . $des;
04 $conn_id = ftp_connect($ftp_server, $port) or die(“Couldn’t connect to $ftp_server”);
05 $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
06 ftp_pasv($conn_id, TRUE);
07 $ftp_folder = dirname(str_ireplace(‘\\’, ‘/’, $des));
08 $dir = explode(“/”, $ftp_folder);
09 $path = “”;
10 for ($i = 0; $i count($dir); $i++) {
11 $path .= “/” . $dir[$i];
12 if (!ftp_chdir($conn_id, $path)) {
13 $result = ftp_mkdir($conn_id, $path);
14 }
15 }
16 if (ftp_put($conn_id, str_ireplace(‘\\’, ‘/’, $des), $source, FTP_BINARY)) {
17 return 1;
18 } else {
19 return 0;
20 }
21 ftp_close($conn_id);
22 }
上面的兩種使用php中ftp函數上傳文件的方法基本可以滿足正常的使用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/298142.html