本文目录一览:
1、北大青鸟设计培训:用PHP控制FTP文件上传? 2、怎么通过PHP来支持FTP和HTTP上传 3、如何使用php中ftp函数上传文件以及解决上传文件失败的方法
北大青鸟设计培训:用PHP控制FTP文件上传?
利用PHP,你总是可以有多种方式来完成某个特定的任务。 我们就拿文件上传举个例子。 当然了,你可以按照传统的方式来使用HTTP文件上传,把文件直接传输到Web服务器磁盘上。 青岛电脑培训认为你还可以用更加奇异的方式上传,用FTP协议两步就完成上传:从你的本地硬盘到Web服务器,然后再到FTP服务器。 PHP在本机同时支持FTP和HTTP上传,所以你可以根据自己应用程序的设计需要进行最佳的选择。 使用PHP的FTP函数进行文件传输几乎与使用传统的FTP客户端相同——你会看到连函数的名字都和标准的FTP命令类似。 关于HTTP文件上传的文章已经多得满天飞了,这就是为什么本文有必要把注意力放在基于FTP的文件上传上了(但是在后面给出的例子中,两种方式你都会看到)。 要注意的是,本教程假设你已经安装好了PHP/Apache,而且HTTP文件上传和FTP的函数都已经激活了。 第一步:确信你拥有连接/上传到FTP服务器的权限PHP的FTP函数需要客户端-服务器连接,所以你需要在进行文件上传之前登录到目标服务器上。 你的第一项任务是确信你已经拥有了完成这项任务的信任书。 这一步可能看起来是理所当然的,但是你会惊奇地发现有多少开发人员忘了这么做,结果后来浪费大量的时间来解决因此而出现的问题。
怎么通过PHP来支持FTP和HTTP上传
给你一些 php 操作 ftp 的函数:
FTP 函数
ftp_alloc
— 为要上传的文件分配空间ftp_cdup
— 切换到当前目录的父目录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 服务器的操作系统类型
例子:
$ftp_server = "";
$ftp_user_name = "";
$ftp_user_pass = "";
$file = ""; // to be uploaded
$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\n";
exit;
} else {
echo "上传文件错误: $file\n";
exit;
}
// 关闭ftp链接
ftp_close($conn_id);
如何使用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.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函数上传文件的方法基本可以满足正常的使用。