用PHP控制FTP文件上传

『 更新时间:2008-2-16 』『 字体:变小 变大 』『 作者:佚名 | 来源:互联网 』

第三步:创建PHP上传处理程序

一旦表单被提交给了Web服务器,下一步(也是最后一步)是使用PHP的FTP函数按照用户提供的访问信任书把它传输到目标服务器上。下面就是完成上述所有工作的脚本(upload.php),见列表C

列表C

<?php

// get FTP access parameters

$host = $_POST['host'];

$user = $_POST['user'];

$pass = $_POST['pass'];

$destDir = $_POST['dir'];

$workDir = "/usr/local/temp"; // define this as per local system

// get temporary file name for the uploaded file

$tmpName = basename($_FILES['file']['tmp_name']);

// copy uploaded file into current directory

move_uploaded_file($_FILES['file']['tmp_name'], $workDir."/".$tmpName) or die("Cannot move uploaded file to working directory");

// open connection

$conn = ftp_connect($host) or die ("Cannot initiate connection to host");

// send access parameters

ftp_login($conn, $user, $pass) or die("Cannot login");

// perform file upload

$upload = ftp_put($conn, $destDir."/".$_FILES['file']['name'], $workDir."/".$tmpName, FTP_BINARY);

// check upload status

// display message

if (!$upload) {

    echo "Cannot upload";

} else {

    echo "Upload complete";

}

// close the FTP stream

ftp_close($conn);

// delete local copy of uploaded file

unlink($workDir."/".$tmpName) or die("Cannot delete uploaded file from working directory -- manual deletion recommended");

?>

这看起来很复杂,但是事实上相当简单。下面就是实际发生的事情:

  • 一旦表单被提交,在各种不同形式的输入字段里由用户提供的信任书被提取出来变成正常的PHP变量。关于上传文件的信息现在就可以通过PHP的专用数组$_FILES获得。
  • $_FILESarray由多个子数组组成,每一个都用于一个上传文件。每个子数组的键都保存有关于相关文件的大小、MIME类型、原始名字和临时名字的信息。这些信息被move_uploaded_file()函数用来把文件从系统的临时目录传输到工作目录。你要记住更改$workDir的值,以反映你系统上的合法文件路径。

提示:在调用move_uploaded_file()函数之前检查上传文件的类型和大小以确保它满足应用程序的上传要求是一个好习惯。例如,如果应用程序要求文件必须以ZIP格式上传,那么在这一阶段就可以(从MIME类型)检查文件是否符合要求,以保证其他格式的文件被过滤掉。

  • ftp_connect()ftp_login()函数用来初始化到指定的FTP主机的连接,并使用提供的信任书登录进去。
  • 如果登录成功,就使用ftp_put()函数把文件从工作目录上传到用户指定的远程目录里,并把它的名字改回原来的名字。要注意的是,向ftp_put()函数加入专用的FTP_BINARY参数是要指定文件以二进制(而非ASCII)模式传输。根据ftp_put()函数返回的结果代码,用户会看到错误或者成功的消息。
  • ftp_close()函数被用来结束FTP会话,而unlink()函数用来完成收尾工作,删除第二步里创建的上传文件的本地副本。

很简单吧,不是吗?你自己试试看!

上一页  [1] [2] 

【点击数:】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口

关文章

您的姓名:
评分等级:
1分 2分 3分 4分 5分
评论内容:
1、严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
2、用户需对自己在使用金石网服务过程中的行为承担法律责任。
3、本站管理员有权保留或删除评论内容。
4、评论内容只代表网友个人观点,与本网站立场无关。
  • 金石网
  • | 设为首页 | 加入收藏 | 联系我们 | 版权申明 | 友情链接 | 站点地图 | 网站帮助 | 网站留言 | 广告服务 |
  • Copyright © 2001-2008 KingsNet.biz All Rights Reserved. 闽ICP备05026663号
  • 返回网站顶部