① 如何使用php中ftp函數上傳文件以及解決上傳文件失敗的方法
因為系統重構實現均衡負載,網站程序與文件伺服器不在一台機子上。於是,程序在上傳文件的同時就要將文件上傳到文件伺服器上。
這里涉及到windows主機上傳到linux主機,linux主機上傳到linux主機。這兩個之間呢,只是稍微的有點區別,因為windows的路徑可以兼容linux路徑,但是linux的路徑不兼容windows主機'\\'的寫法。所以,在寫路徑的時候稍加註意即可。
下面,就列舉上面兩種情況php中使用ftp函數上傳文件的具體實現代碼。
一、 ftp上傳圖片參數說明。
$source:本機圖片完整的路徑。(/a/b/c.jpg)
$des :上傳目標linux主機完整的路徑。
$ftp_server:ftp地址
$ftp_user_name:ftp用戶名
$ftp_user_pass: ftp密碼
$port:埠
二、如何使用php中ftp函數上傳文件的方法
例如:
本地地址為:/a/b/c.jpg
目標地址為:/d/a/b/c.jpg
2.1、linux主機上傳linux主機。
function ftpSendFile($source,$des,$ftp_server,$ftp_user_name,$ftp_user_pass,$port)
{
// 此步驟是在於上傳目錄與本機的目錄不一致轉換使用
$des = "/d" . $des;
$conn_id = ftp_connect($ftp_server, $port) or die("Couldn't connect to $ftp_server");
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, TRUE);
$ftp_folder = dirname($des);
$dir = explode("/", $ftp_folder);
$path = "";
for ($i = 0; $i < count($dir); $i++) {
$path .= "/" . $dir[$i];
if (!ftp_chdir($conn_id, $path)) {
$result = ftp_mkdir($conn_id, $path);
}
}
if (ftp_put($conn_id, $des, $source, FTP_BINARY)) {
return 1;
} else {
return 0;
}
ftp_close($conn_id);
}
2、windows主機上傳linux主機。
function sendPic($source,$des,$ftp_server,$ftp_user_name,$ftp_user_pass,$port)
{
$des = "/d" . $des;
$conn_id = ftp_connect($ftp_server, $port) or die("Couldn't connect to $ftp_server");
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, TRUE);
$ftp_folder = dirname(str_ireplace('\\', '/', $des));
$dir = explode("/", $ftp_folder);
$path = "";
for ($i = 0; $i < count($dir); $i++) {
$path .= "/" . $dir[$i];
if (!ftp_chdir($conn_id, $path)) {
$result = ftp_mkdir($conn_id, $path);
}
}
if (ftp_put($conn_id, str_ireplace('\\', '/', $des), $source, FTP_BINARY)) {
return 1;
} else {
return 0;
}
ftp_close($conn_id);
}
上面的兩種使用php中ftp函數上傳文件的方法基本可以滿足正常的使用。
② php連接ftp下載或上傳文件
$conn_id = ftp_connect('localhost') or die('can\'t connect to ftp');
// login with username and password
$login_result = @ftp_login($conn_id, $ftpname, $ftppass);
// check connection
if ((!$conn_id) || (!$login_result)) {
echo '連接出錯';
exit;
}
//$path 路徑$fliename文件名多個文件上傳
$dir=ftp_chdir($conn_id,$filename);//上傳目錄
$Name=array_filter(explode('|',$fliename));
foreach ($Name as $key=>$val){
ftp_put($conn_id, $val, $path.$val, FTP_BINARY)or die('上傳失敗!');
}
ftp_close($conn_id);
③ 什麼是ftp文件,怎麼將php網站文件上傳到伺服器
ftp是
文件傳輸協議
,利用此協議可以在網路上傳輸文件。
把文件上傳到伺服器,一般都是使用ftp的方法,因為往往伺服器都會提供ftp功能。具體操作需要安裝一個方便操作的ftp客戶端,例如TotalCommander就很好,在客戶端裡面建議一個會話,輸入伺服器的地址、用戶名、密碼,然後就可以連接伺服器,連接成功後可以看見伺服器上的文件,可以和本地的進行
雙向傳輸
(可以上傳和下載)。
如果只上傳個別文件,可以使用瀏覽器或者DOS進行傳輸,瀏覽器的方法是打開地址:ftp://用戶名:密碼@伺服器地址/,DOS命令是ftp
伺服器地址,然後輸入用戶名和密碼。
④ php ftp 上傳文件夾
是指使用php來上傳文件么?
我沒有試過php操作ftp..
按照理論的話,如果你會單個上傳.. 你就可以用讀取目錄的函數來進行全部上傳
$handle = opendir('xxx') // 打開某文件夾
while($file = readdir($handle)) { // 遍歷剛才文件夾 $file是文件名稱
}
如果你只是用ftp上傳php文件.. 建議你使用filezilla,是個免費的開源FTP程序..至於說上傳目錄,右鍵目錄然後點上傳即可
⑤ 北大青鳥設計培訓:用PHP控制FTP文件上傳
利用PHP,你總是可以有多種方式來完成某個特定的任務。
我們就拿文件上傳舉個例子。
當然了,你可以按照傳統的方式來使用HTTP文件上傳,把文件直接傳輸到Web伺服器磁碟上。
沈陽電腦培訓http://www.kmbdqn.cn/認為你還可以用更加奇異的方式上傳,用FTP協議兩步就完成上傳:從你的本地硬碟到Web伺服器,然後再到FTP伺服器。
PHP在本機同時支持FTP和HTTP上傳,所以你可以根據自己應用程序的設計需要進行最佳的選擇。
使用PHP的FTP函數進行文件傳輸幾乎與使用傳統的FTP客戶端相同——你會看到連函數的名字都和標準的FTP命令類似。
關於HTTP文件上傳的文章已經多得滿天飛了,這就是為什麼本文有必要把注意力放在基於FTP的文件上傳上了(但是在後面給出的例子中,兩種方式你都會看到)。
要注意的是,本教程假設你已經安裝好了PHP/Apache,而且HTTP文件上傳和FTP的函數都已經激活了。
第一步:確信你擁有連接/上傳到FTP伺服器的許可權PHP的FTP函數需要客戶端-伺服器連接,所以你需要在進行文件上傳之前登錄到目標伺服器上。
你的第一項任務是確信你已經擁有了完成這項任務的信任書。
這一步可能看起來是理所當然的,但是你會驚奇地發現有多少開發人員忘了這么做,結果後來浪費大量的時間來解決因此而出現的問題。
⑥ 用php向ftp上傳文件
參考代碼如下:
$ftp_server = "根據實際IP設置";
$ftp_user = "wodota_ting";
$ftp_pass = "wodotating!@#";
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
exit;
} else {
echo "Connected to $ftp_server, for user $ftp_user_name";
}
$source_file=$this->filepath.$this->newFileName; //源地址
echo $source_file;
$destination_file="/testxiao/".$this->newFileName; //目標地址
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY) or die("Couldn't connect to $ftp_server");
//ftp_close($conn_id);
if (!$upload) {
echo "FTP upload has failed!";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";
}
ftp_close($conn_id);
⑦ php中如何實現ftp上傳基礎代碼
p工具我們都用過是用來上傳文件的,那麼在php中如何用代碼實現呢,下面簡單介紹一個最基礎最簡單的列子,首先根據我們使用ftp工具來說,實現文件上傳需要打開ftp工具->輸入ftp地址,埠號,賬號,密碼登陸ftp->從本地選擇相應文件上傳到ftp相應目錄,php中要實現這么一個簡單的功能無非也是這樣。
第一步:打開ftp
$ip="101.101.101.101";
$name="name";
$pwd="mima";
$con=ftp_connect($ip,"21")
or("連接失敗");
第二步:登陸ftp
ftp_login($con,$name,$pwd);
第三步:上傳本地test.php文件到ftp
image目錄下
ftp_put($con,"image/test.php","test.php",FTP_ASCII);
此時在ftp上的image目錄下可以看到test.php文件了,當然這里上傳文件,可以擴展下寫個上傳表單,將表單附件上傳ftp這樣就更方便,這里只作為一個文件最基礎上傳ftp功能。
⑧ 怎麼用PHP實現對FTP空間上傳文件
PHP的問題,建議請先查詢PHP手冊後再發問,謝謝
此題解法在FTP函數的第一個demo中就有..如下:
<?php
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// check connection
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
exit;
} else {
echo "Connected to $ftp_server, for user $ftp_user_name";
}
// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
// check upload status
if (!$upload) {
echo "FTP upload has failed!";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";
}
// close the FTP stream
ftp_close($conn_id);
?>
⑨ 怎麼通過PHP來支持FTP和HTTP上傳
給你一些 php 操作 ftp 的函數:
FTP 函數
ftp_alloc— 為要上傳的文件分配空間
ftp_cp— 切換到當前目錄的父目錄
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="";//tobeuploaded
$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 ";
exit;
}else{
echo"上傳文件錯誤:$file ";
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函數上傳文件的方法基本可以滿足正常的使用。