PHP上传图片发送到远程服务器
将图片上传至图片服务器,在项目开发过程中有很大概率会遇到,在动静分离的今日,将静态资源单独拿出来是一种趋势,下面分享一下在实际开发过程中的应用,将代码分享出来。
一、逻辑
首先,我们以thinkphp框架为基础,在表单或ajax(包含JS组件)提交图片信息至服务器时,我们首先将资源上传至本地服务器,在上传时可进行图片的压缩、裁剪、重命名等操作。关于图片处理不做太多的说明,本方案是将上传资源再次上传至服务器,然后删除本地资源,返回或保存服务器图片路径。

二、说明
本方案采用PHP内置函数,需要有ftp地址、账户、密码、端口;
ftp_connect 打开 FTP 连接
ftp_login 登录 FTP 服务器。
ftp_nlist 返回指定目录的文件列表。
ftp_mkdir 在 FTP 服务器创建一个新目录。
ftp_chdir 改变 FTP 服务器上的当前目录。
ftp_put 把文件上传到服务器
ftp_close 关闭 FTP 连接。
三、示例代码
<?php /** * 上传图片至远程服务器 * @param $path string 图片路径 * @param $status int 是否是本地图片 默认为本地图片 * @param $type int 是否删除 默认为删除 * @return bool */ function uploadServer($path, $status = 1, $type = 1) { if (!$path) { return false; } //ftp 配置参数 $ftpIp = '1.2.3.4'; //ip地址 $port = 21; //端口号 $timeOut = 90; //响应时间 $name = 'zhanghu'; //ftp 账户 $pass = 'mima'; //ftp 密码 $uploadPath = '/img/'; //连接ftp $conn = ftp_connect($ftpIp, $port, $timeOut) or die("Could not connect"); //登录frp ftp_login($conn, $name, $pass); //返回当前目录名称 $nowDir = date('Ymd', time()); $res = ftp_nlist($conn, $nowDir); if (!$res) { //不存在目录,则创建 ftp_mkdir($conn, $nowDir); } //切换目录 至 上传目录 ftp_chdir($conn, $nowDir); //服务器文件名称,规则 MD5 加密当前时间戳,文件名后缀为 jpg $serverName = md5(time()) . '.jpg'; //上传图片 $result = ftp_put($conn, $serverName, $path, FTP_BINARY); if ($result === FALSE) { return ['code' => 100, 'msg' => '上传失败']; } else { //本地图片 and 删除原图 if ($status == 1 && $type == 1) { //删除本地文件 unlink($path); } return ['code' => 200, 'msg' => '上传成功', 'data' => $uploadPath . $nowDir . '/' . $serverName]; } //关闭连接 ftp_close($conn); }
相关推荐
-
MySQL 安装失败,提示Apply Security Settings 的处理办法
MySQL 安装失败,提示Apply Security Settings 的处理办法2025-04-20 01:54:57 -
MySQL事务隔离级别详解2025-04-20 01:44:01
-
一文说清nginx规则匹配(含案例分析)2025-04-20 01:10:02
-
运维服务篇:Nginx常用功能(rewrite重定向/location定位等)
运维服务篇:Nginx常用功能(rewrite重定向/location定位等)2025-04-20 00:55:25 -
php定义变量规则不能包含哪些字符?2025-04-20 00:27:24