想知道上传文件的详细步骤吗,下面我就带大家一起详细分析一下吧。利用PHP,你总是可以有多种方式来完成某个特定的任务。我们就拿文件上传举个例子。当然了,你可以按照传统的方式来使用HTTP文件上传,把文件直接传输到Web服务器磁盘上。你还可以用更加奇异的方式上传,用FTP协议两步就完成上传:从你的本地硬盘到Web服务器,然后再到FTP服务器。
#T#PHP在本机同时支持FTP和HTTP上传,所以你可以根据自己应用程序的设计需要进行最佳的选择。使用PHP的FTP函数进行文件传输几乎与使用传统的FTP客户端相同——你会看到连函数的名字都和标准的FTP命令类似。关于HTTP文件上传的文章已经多得满天飞了,这就是为什么本文有必要把注意力放在基于FTP的文件上传上了(但是在后面给出的例子中,两种方式你都会看到)。要注意的是,本教程假设你已经安装好了PHP/Apache,而且HTTP文件上传和FTP的函数都已经激活了。本文可以从这里下载,所有的源代码都以单独的文本方式列出来了。
第一步:确信你拥有连接/上传到FTP服务器的权限
PHP的FTP函数需要客户端-服务器连接,所以你需要在进行文件上传之前登录到目标服务器上。你的第一项任务是确信你已经拥有了完成这项任务的信任书。这一步可能看起来是理所当然的,但是你会惊奇地发现有多少开发人员忘了这么做,结果后来浪费大量的时间来解决因此而出现的问题。你可以通过使用命令行的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.
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
一旦确认有相关的访问权限,你就可以登录出来。
第二步:创建上传表单
然后,创建一个简单的HTML表单,向用户询问重要的参数——FTP服务器的访问信息、服务器上传的目录,以及完整的目录和上传文件的名字。下面这个例子就是这个表单的样式。
PHP上传文件代码列表B
<html>
<head></head>
<body>
<h2>Pleaseprovidethefollowinginformation:</h2>
<formenctypeformenctype="multipart/form-data"method="post"action="upload.php">
<inputtypeinputtype="hidden"name="MAX_FILE_SIZE"value="5000000"/>
Host<br/>
<inputtypeinputtype="text"name="host"/><p/>
Username<br/>
<inputtypeinputtype="text"name="user"/><p/>
Password<br/>
<inputtypeinputtype="password"name="pass"/><p/>
Destinationdirectory<br/>
<inputtypeinputtype="text"name="dir"/><p/>
File<br/>
<inputtypeinputtype="file"name="file"/><p/>
<inputtypeinputtype="submit"name="submit"value="UploadFile"/>
</form>
</body>
</html>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
在这里,<inputtype=file...>元素用来生成文件选择对话框,用户通过它来选择要被上传的文件。<formenctype=...>元素然后就把表单数据编码成为多个部分提交,这可以让PHP更容易地识别提交的文件组件。
第三步:创建PHP上传处理程序
一旦表单被提交给了Web服务器,下一步(也是最后一步)是使用PHP的FTP函数按照用户提供的访问信任书把它传输到目标服务器上。下面就是完成上述所有工作的脚本(upload.php)。
PHP上传文件代码列表C
<?php
//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");
?>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.