背景:

图片上传功能应该是个极为普遍的,在此参考了 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图片上传相关推荐

  1. ftp服务器可以异地传文件吗,FTP图片上传到异地服务器

    #region 创建文件夹  MakeFolder() /// /// 创建文件夹 /// /// 例如:/newDir /// ftp地址(可带目录) /// ftp用户名 /// ftp密码 pu ...

  2. php发表图片文章代码,最新PHP图片上传的一个例子的文章【延伸阅读】

    ThinkPHP+Uploadify图片上传示例 => Yii框架+CKEditor实现图片上传示例 => CodeIgniter使用类库做图片上传示例 => php+js实现异步图 ...

  3. php+jquery实现图片上传预览_和拖动位置值,PHP教程:thinkphp jquery实现图片上传和预览效果...

    <PHP教程:thinkphp jquery实现图片上传和预览效果>要点: 本文介绍了PHP教程:thinkphp jquery实现图片上传和预览效果,希望对您有用.如果有疑问,可以联系我 ...

  4. 链接ftp,把文件或图片上传到ftp指定的文件夹中

    /******************************************************************** *  * * Filename : .java * Auth ...

  5. 通过分布式把本地图片上传到FTP(1)

    1.先打开Linix 打开终端 输入 [root@localhost 桌面]# cd -/ [root@localhost ~]# cd -/ [root@localhost /]# cd usr [ ...

  6. 将图片上传到FTP服务器

    [FTP服务器] 介绍一个     ftp客户端工具:iis7服务器管理工具 IIs7服务器管理工具可以批量管理ftp站点,同时具备定时上传下载的功能. 作为服务器集成管理器,它最优秀的功能就是批量管 ...

  7. php dwz,ThinkPHP+DWZ之DWZ自带编辑器图片上传

    在用DWZ自带编辑器的时候,对于文件上传这个功能很是头痛,研究了一下午,才研究出结果来,给网友们分享下//判断是否上传成功 if(isset($data[0]["name"]) & ...

  8. thinkphp下的图片上传

    关于图片上传,实现方法很多,比如可以用jQuery,当然,我们的thinkPHP内置了关于图片上传的功能,我们可以直接使用,使用方法如下: 首先,是表单书写,我们建立如下表单: [html] view ...

  9. ThinkPHP图片上传的使用 .

    关于图片上传,实现方法很多,比如可以用jQuery,当然,我们的thinkPHP内置了关于图片上传的功能,我们可以直接使用,使用方法如下: 首先,是表单书写,我们建立如下表单: 01.<form ...

最新文章

  1. struct stat结构体的详解和用法
  2. prometheus + influxdb + grafana + mysql
  3. c 子类对象 访问父类对象受保护成员_06-JavaSe面向对象
  4. phpcmsV9留言插件提交后返回上一页实现方法
  5. oracle 配置监听和TNS常见的问题
  6. 【教程】Edraw Max(亿图图示)基本操作图文详解
  7. 用python实现列线图绘制
  8. 20200528-换脸算法调研
  9. 51单片机 Keil C 延时程序的简单(晶振12MHz,一个机器周期1us.)
  10. mysql文件上传漏洞_文件上传漏洞
  11. 北卡罗来纳州立大学计算机专业,2020年北卡罗来纳州立大学有哪些优势专业
  12. 经济基础知识(中级)【4】
  13. 基于android的资讯阅读APP
  14. i7-10700K和i7-9700KF哪个好
  15. 字符串匹配 python
  16. 操作系统之进程调度 (十一) --- 进程调度的时机、进程调度的方式、进程调度的狭义与广义...
  17. 利用PYTHON出小学数学题
  18. 超简单的Python教程系列——异步
  19. matlab simulink 磷酸铁锂电池仿真
  20. Windows 中的 redis安装、设置密码,做成服务

热门文章

  1. 美国各银行考虑购买同行有毒资产
  2. python猜年龄练习
  3. Python桌面可视化+自动登录学校教务系统(含源码!!!)
  4. keyshot可以打开mtl文件吗_KeyShot支持的文件格式
  5. C#泛型的理解/为什么要使用泛型/什么是泛型/怎么用泛型
  6. opencv操作raw文件
  7. html5专业术语叫啥,HTML5的一些术语和概念
  8. 使用MachOView辅助破解AppStore应用
  9. vue.js 密码加密_加密设备攻防(一)
  10. 源码赏析 - 1K的Firewatch游戏