FTP上传编辑器提交过来的图片

本文介绍了一种将编辑器中上传的图片从相对路径转换为绝对路径的方法,使用PHP和FTP实现,适用于表单提交场景。通过正则表达式匹配图片路径,上传图片并更新链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 编辑器上传的图片默认是在项目目录下,图片地址是相对路径:

<img src="/public/temp/upload/20190125/1548385742_7.png" alt="一起来飞车" />

2. 现在需求是提交表单时把编辑器中的本地图片上传到FTP,并修改对应图片路径为绝对路径,即http/https开头的:

<img src="http://www.image.com/public/temp/upload/20190125/1548385742_7.png" alt="一起来飞车" />

思路:用正则匹配内容中的所有相对路径的img标签,PHP函数 preg_match_all() ,然后循环上传每一张图片到FTP,并用PHP函数 str_replace() 替换对应图片地址,最后返回文章内容。

 3. 示例代码(CI框架):

/**
 *  @Explain:   ftp上传编辑器提交过来的图片
 *  @Param:     $content  编辑器内容
 */
    public function ueditorUpload($content){
        $config    = $this->config->config;
        $content   = stripslashes($content);
        $imgArray  = array();
        
        //匹配相对路径的图片
        $regular   = '/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(\/.*?)\\1[^>]*?\/?\s*>/i';
        preg_match_all($regular, $content, $imgArray);
        $imgArray = array_unique($imgArray[2]);
        if($imgArray){
            $this->ftpUpload();
            foreach ($imgArray as $k => $val) {
                $imgFiles = $_SERVER['DOCUMENT_ROOT'].$val;
                $pathArr  = explode('/', $val);
                $imgname  = $pathArr[5];
                $picpath  = 'imgfile/'.date('Ym').'/'.date('d');
                $picurlpath  = date('Ym').'/'.date('d');
                $this->ftp->rec_mkdir($picpath);   //递归创建目录
                $bool = $this->ftp->upload($imgFiles, $picpath.'/'.$imgname);
                if($bool){
                    $content = str_replace($val, $config['image_url'].$picurlpath.'/'.$imgname, $content);
                }
            }
            $this->ftp->close();    //关闭ftp 
        }
        return $content;
    }

大神们如有更好的方法欢迎留言^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值