新聞中心
想知道上傳文件的詳細步驟嗎,下面我就帶大家一起詳細分析一下吧。利用PHP,你總是可以有多種方式來完成某個特定的任務。我們就拿文件上傳舉個例子。當然了,你可以按照傳統(tǒng)的方式來使用HTTP文件上傳,把文件直接傳輸?shù)絎eb服務器磁盤上。你還可以用更加奇異的方式上傳,用FTP協(xié)議兩步就完成上傳:從你的本地硬盤到Web服務器,然后再到FTP服務器。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,奉賢企業(yè)網(wǎng)站建設,奉賢品牌網(wǎng)站建設,網(wǎng)站定制,奉賢網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,奉賢網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
#T#PHP在本機同時支持FTP和HTTP上傳,所以你可以根據(jù)自己應用程序的設計需要進行最佳的選擇。使用PHP的FTP函數(shù)進行文件傳輸幾乎與使用傳統(tǒng)的FTP客戶端相同——你會看到連函數(shù)的名字都和標準的FTP命令類似。關于HTTP文件上傳的文章已經(jīng)多得滿天飛了,這就是為什么本文有必要把注意力放在基于FTP的文件上傳上了(但是在后面給出的例子中,兩種方式你都會看到)。要注意的是,本教程假設你已經(jīng)安裝好了PHP/Apache,而且HTTP文件上傳和FTP的函數(shù)都已經(jīng)激活了。本文可以從這里下載,所有的源代碼都以單獨的文本方式列出來了。
第一步:確信你擁有連接/上傳到FTP服務器的權(quán)限
PHP的FTP函數(shù)需要客戶端-服務器連接,所以你需要在進行文件上傳之前登錄到目標服務器上。你的第一項任務是確信你已經(jīng)擁有了完成這項任務的信任書。這一步可能看起來是理所當然的,但是你會驚奇地發(fā)現(xiàn)有多少開發(fā)人員忘了這么做,結(jié)果后來浪費大量的時間來解決因此而出現(xiàn)的問題。你可以通過使用命令行的FTP客戶端登錄到目標服務器上,以檢查連接狀況并嘗試上傳一個假文件。
PHP上傳文件代碼列表A
- $ftp
- ftp>opensome.host.com
- Connectedtosome.host.com.
- 220WelcometoleonFTPServer!
- User:upload
- 331Useruploadokay,needpassword.
- Password:***
- 230Restricteduserloggedin.
- ftp>bin
- 200Typeokay.
- ftp>hash
- HashmarkprintingOn?ftp:(2048bytes/hashmark).
- ftp>putfile.bin
- 200PORTcommandsuccessful.
- 150OpeningBINARYmodedataconnection.
- ##
- 226Transfercompleted.
- ftp:4289bytessentin0.00Seconds4289000.00Kbytes/sec.
- ftp>bye
- 221Goodbye.
一旦確認有相關的訪問權(quán)限,你就可以登錄出來。
第二步:創(chuàng)建上傳表單
然后,創(chuàng)建一個簡單的HTML表單,向用戶詢問重要的參數(shù)——FTP服務器的訪問信息、服務器上傳的目錄,以及完整的目錄和上傳文件的名字。下面這個例子就是這個表單的樣式。
PHP上傳文件代碼列表B
- Pleaseprovidethefollowinginformation:
- <formenctypeformenctype="multipart/form-data"method="post"action="upload.php">
- <inputtypeinputtype="hidden"name="MAX_FILE_SIZE"value="5000000"/>
- Host
- <inputtypeinputtype="text"name="host"/>
- Username
- <inputtypeinputtype="text"name="user"/>
- Password
- <inputtypeinputtype="password"name="pass"/>
- Destinationdirectory
- <inputtypeinputtype="text"name="dir"/>
- File
- <inputtypeinputtype="file"name="file"/>
- <inputtypeinputtype="submit"name="submit"value="UploadFile"/>
在這里,
第三步:創(chuàng)建PHP上傳處理程序
一旦表單被提交給了Web服務器,下一步(也是最后一步)是使用PHP的FTP函數(shù)按照用戶提供的訪問信任書把它傳輸?shù)侥繕朔掌魃?。下面就是完成上述所有工作的腳本(upload.php)。
PHP上傳文件代碼列表C
- //getFTPaccessparameters
- $host=$_POST['host'];
- $user=$_POST['user'];$pass=$_POST['pass'];
- $destDir=$_POST['dir'];
- $workDir="/usr/local/temp";//definethisasperlocalsystem
- //gettemporaryfilenamefortheuploadedfile
- $tmpName=basename($_FILES['file']['tmp_name']);
- //copyuploadedfileintocurrentdirectory
- move_uploaded_file($_FILES['file']['tmp_name'],$workDir."/".$tmpName)ordie("Cannotmoveuploadedfiletoworkingdirectory");
- //openconnection
- $conn=ftp_connect($host)ordie("Cannotinitiateconnectiontohost");
- //sendaccessparameters
- ftp_login($conn,$user,$pass)ordie("Cannotlogin");
- //performfileupload
- $upload=ftp_put($conn,$destDir."/".$_FILES['file']['name'],$workDir."/".$tmpName,FTP_BINARY);
- //checkuploadstatus
- //displaymessage
- if(!$upload){
- echo"Cannotupload";
- }else{
- echo"Uploadcomplete";
- }
- //closetheFTPstream
- ftp_close($conn);
- //deletelocalcopyofuploadedfile
- unlink($workDir."/".$tmpName)ordie("Cannotdeleteuploadedfilefromworkingdirectory--manualdeletionrecommended");
- ?>
文章標題:三步FTP實現(xiàn)PHP上傳文件代碼剖析
網(wǎng)站網(wǎng)址:http://fisionsoft.com.cn/article/ccojdjh.html


咨詢
建站咨詢
