ThinkPHP FTP图片上传
背景:
图片上传功能应该是个极为普遍的,在此参考了 ThinkPHP 框架中的集成方法整理了一下 FTP图片的上传功能,这样方便在后台操作时,把有关的图片直接上传到线上的图片服务器,避免大流量访问的图片加载缓慢,降低网站的访问压力,不合理之处,敬请指摘...
操作:
1.前端设计
这里主要为了测试功能的实现,使用最简单的设计,既方便参考又有利于后期的功能扩展。如下附 upload.html主要代码,着重注意红框圈出的代码,其中 css样式比较简单,需要的可以参考后面的源代码。
2.后台控制器设计
config.class.php 主要代码如下所示,其中设计的表“conf”在此只需用两个字段就好——'tag','value',可以使用简单的varchar类型
public function upload(){if (IS_POST){foreach ($_FILES as $key => $value){$img = handleImg($key);$furl = C('REMOTE_ROOT').$img;if ($img){ftp_upload($furl,$img);$saveData['value'] = $img;M('conf')->where("tag = '".$key."'")->save($saveData);}}$this->success('FTP 测试完成',U('Config/upload'),2);}else{$imgUrl = M('conf')->where("tag = 'upImg'")->getField('value');$this->assign('imgUrl',$imgUrl);$this->display();}
}
3.配置数据
在公共配置文件中,进行如下常量的数据配置,参考代码如下,注意配置FTP 账号及密码的正确性,此处安全起见只是举例。
//ftp(外网服务器)上传文件相关参数'FTP_SEVER' => 'http://img.52zhenmi.com', //此地址,作为图片读取的位置 请上线前仔细确认'FTP_HOST' => 'img.52zhenmi.com','WEB_SEVER' => 'http://img.52zhenmi.com','WEB_M_SERVER' => 'http://www.52zhenmi.com/m','FTP_NAME' => 'fexxxi',//ftp帐户'FTP_PWD' => '1qxxxxxxw',//ftp密码'FTP_PORT' => '21',//ftp端口,默认为21'FTP_PASV' => true,//是否开启被动模式,true开启,默认不开启'FTP_SSL' => false,//ssl连接,默认不开启'FTP_TIMEOUT' => 60,//超时时间,默认60,单位 s'REMOTE_ROOT' => '/',//图片服务器根目录
4.引入文件
以我的代码为例,在此引用了两个文件,其中的 FTP.class.php 放在了 '/Library/Think' 目录下;
Upload.class.php 放在了'/Library/Org/Net'目录下,可根据自己的使用习惯自行调整目录,只要保证实例化路径时没问题就可。
5.公共函数添加
注意添加上文步骤2中使用到的公共函数。
/*** 图片上传的公共处理方法* @param string $fileName 图片上传的name* @return string 图片的存储路径*/
function handleImg($fileName){if($_FILES[$fileName]['tmp_name'] != ""){$img = $_FILES[$fileName];$imgUrl = __ROOT__."/public";$upload = new \Org\Net\Upload($img, $imgUrl);return $upload->main();}
}
FTP上传文件函数
function ftp_upload($remotefile,$localfile){$ftp = new \Think\Ftp();$data['server'] = C('FTP_HOST');$data['username'] = C('FTP_NAME');//ftp帐户$data['password'] = C('FTP_PWD');//ftp密码$data['port'] = C('FTP_PORT');//ftp端口,默认为21$data['pasv'] = C('FTP_PASV');//是否开启被动模式,true开启,默认不开启$data['ssl'] = C('FTP_SSL');//ssl连接,默认不开启$data['timeout'] = C('FTP_TIMEOUT');//超时时间,默认60,单位 s$info = $ftp->start($data);if($info){if($ftp->put($remotefile,$localfile)){}}$ftp->close();
}
6.操作截图
7.提示
对于这份参考代码,涉及到的公共方法 handleImg()会先将需要上传的图片传到当前操作的网站根目录,之后又会通过 ftp_upload()将图片传到对应的图片FTP服务器,从实现步骤上看第一步多余,主要是开发过程中的测试服务器不符合FTP账号要求,同时又要方便线上内容修改的及时更新,暂没优化,也不麻烦,算留大家一个自由发挥的机会吧。
源代码下载 >>>
ThinkPHP FTP图片上传相关推荐
- ftp服务器可以异地传文件吗,FTP图片上传到异地服务器
#region 创建文件夹 MakeFolder() /// /// 创建文件夹 /// /// 例如:/newDir /// ftp地址(可带目录) /// ftp用户名 /// ftp密码 pu ...
- php发表图片文章代码,最新PHP图片上传的一个例子的文章【延伸阅读】
ThinkPHP+Uploadify图片上传示例 => Yii框架+CKEditor实现图片上传示例 => CodeIgniter使用类库做图片上传示例 => php+js实现异步图 ...
- php+jquery实现图片上传预览_和拖动位置值,PHP教程:thinkphp jquery实现图片上传和预览效果...
<PHP教程:thinkphp jquery实现图片上传和预览效果>要点: 本文介绍了PHP教程:thinkphp jquery实现图片上传和预览效果,希望对您有用.如果有疑问,可以联系我 ...
- 链接ftp,把文件或图片上传到ftp指定的文件夹中
/******************************************************************** * * * Filename : .java * Auth ...
- 通过分布式把本地图片上传到FTP(1)
1.先打开Linix 打开终端 输入 [root@localhost 桌面]# cd -/ [root@localhost ~]# cd -/ [root@localhost /]# cd usr [ ...
- 将图片上传到FTP服务器
[FTP服务器] 介绍一个 ftp客户端工具:iis7服务器管理工具 IIs7服务器管理工具可以批量管理ftp站点,同时具备定时上传下载的功能. 作为服务器集成管理器,它最优秀的功能就是批量管 ...
- php dwz,ThinkPHP+DWZ之DWZ自带编辑器图片上传
在用DWZ自带编辑器的时候,对于文件上传这个功能很是头痛,研究了一下午,才研究出结果来,给网友们分享下//判断是否上传成功 if(isset($data[0]["name"]) & ...
- thinkphp下的图片上传
关于图片上传,实现方法很多,比如可以用jQuery,当然,我们的thinkPHP内置了关于图片上传的功能,我们可以直接使用,使用方法如下: 首先,是表单书写,我们建立如下表单: [html] view ...
- ThinkPHP图片上传的使用 .
关于图片上传,实现方法很多,比如可以用jQuery,当然,我们的thinkPHP内置了关于图片上传的功能,我们可以直接使用,使用方法如下: 首先,是表单书写,我们建立如下表单: 01.<form ...
最新文章
- struct stat结构体的详解和用法
- prometheus + influxdb + grafana + mysql
- c 子类对象 访问父类对象受保护成员_06-JavaSe面向对象
- phpcmsV9留言插件提交后返回上一页实现方法
- oracle 配置监听和TNS常见的问题
- 【教程】Edraw Max(亿图图示)基本操作图文详解
- 用python实现列线图绘制
- 20200528-换脸算法调研
- 51单片机 Keil C 延时程序的简单(晶振12MHz,一个机器周期1us.)
- mysql文件上传漏洞_文件上传漏洞
- 北卡罗来纳州立大学计算机专业,2020年北卡罗来纳州立大学有哪些优势专业
- 经济基础知识(中级)【4】
- 基于android的资讯阅读APP
- i7-10700K和i7-9700KF哪个好
- 字符串匹配 python
- 操作系统之进程调度 (十一) --- 进程调度的时机、进程调度的方式、进程调度的狭义与广义...
- 利用PYTHON出小学数学题
- 超简单的Python教程系列——异步
- matlab simulink 磷酸铁锂电池仿真
- Windows 中的 redis安装、设置密码,做成服务