1、通过PHP,可以把文件上传到服务器。创建一个文件上传表单,下面这个供上传文件的 HTML 表单:
<html><body>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
2、创建上传脚本,命名为"upload_file.php" 文件含有供上传文件的代码:
<?phpif ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />"
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />"
echo "Type: " . $_FILES["file"]["type"] . "<br />"
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"
echo "Stored in: " . $_FILES["file"]["tmp_name"]
}
?>
注:通过使用 PHP 的全局数组 “$_FILES”,就可以实现从客户计算机向远程服务器上传文件。
利用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函数需要客户端-服务器连接,所以你需要在进行文件上传之前登录到目标服务器上。
你的第一项任务是确信你已经拥有了完成这项任务的信任书。
这一步可能看起来是理所当然的,但是你会惊奇地发现有多少开发人员忘了这么做,结果后来浪费大量的时间来解决因此而出现的问题。
一个实例:首先,在自己台式机和笔记本上都开通了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'
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)
if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
echo "文件移动成功\n"
} else {
echo "移动失败\n"
}
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']."上传成功\n"
} else {
echo "上传失败\n"
}
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(文本模式)时,图片能上传但无法显示,其他文件重命名、中文乱码解决、上传权限控制等,就不在此提及了。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)