php 保存编辑器内容中的远程图片为本地图片

有时,我们的编辑器复制过来的图片是远程的,需要下载到本地服务器上。

1、提取远程图片

  /*
*功能:php完美实现下载远程图片保存到本地
*参数:文件url,保存文件目录,保存文件名称,使用的下载方式
*当保存文件名称为空时则使用远程文件原来的名称
*/

    private   function getImage($url,$filename=‘‘,$type=0){
        if(trim($url)==‘‘){
            return array(‘file_name‘=>‘‘,‘save_path‘=>‘‘,‘error‘=>1);
        }
        $filePath=‘upload/content/‘.date(‘Ymd‘);
      //  if(trim($save_dir)==‘‘){
            $save_dir=ROOT_PATH. DS . ‘www‘. DS . $filePath ;
        //}
        if(trim($filename)==‘‘){//保存文件名
            $ext=strrchr($url,‘.‘);
            if($ext!=‘.gif‘&&$ext!=‘.jpg‘){
                return array(‘file_name‘=>‘‘,‘save_path‘=>‘‘,‘error‘=>3);
            }
            $filename=time().$ext;
        }
        if(0!==strrpos($save_dir,‘/‘)){
            $save_dir.=‘/‘;
        }
//创建保存目录
        if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){
            return array(‘file_name‘=>‘‘,‘save_path‘=>‘‘,‘error‘=>5);
        }
//获取远程文件所采用的方法
        if($type){
            $ch=curl_init();
            $timeout=5;
            curl_setopt($ch,CURLOPT_URL,$url);
            curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
            curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
            $img=curl_exec($ch);
            if($img==false)
            {
                return array(‘file_name‘=>‘‘,‘save_path‘=>‘‘,‘error‘=>6);
            }
            curl_close($ch);
        }else{
            ob_start();
            readfile($url);
            $img=ob_get_contents();
            ob_end_clean();
        }
//$size=strlen($img);
//文件大小
        [email protected]($save_dir.$filename,‘a‘);
        fwrite($fp2,$img);
        fclose($fp2);
        unset($img,$url);
        return array(‘file_name‘=>$filename,‘save_path‘=>DS.$filePath,‘error‘=>0);
    }

  

2、获取编辑器里的内容,使用上面的方法替换编辑器里的内容

 /*保存远程图片到本地*
    @param $content 编辑器里的内容
    @return $content  返回替换过的内容
    */
    protected  function  getRempotePicToLocation($content)
    {
      preg_match_all(‘/<img[^"]+src="(http[^"]+)\"/‘,$content,$matches);
      if($matches)
      {
          $imgList=$matches[1];
          foreach ($imgList as $matche)
          {
          /*得到当前文件的文件名和扩展名*/
                 preg_match(‘/\/([^\/]+\.[a-z]+)[^\/]*$/‘,$matche,$fileInfo);
                 $info=$this->getImage($matche,$fileInfo[1],0);
                 if($info[‘error‘]==0)
                 {
                     $content=str_replace($matche,$info[‘save_path‘].DS.$info[‘file_name‘],$content);
                 }

          }

      }
   return $content;
    }

原文地址:https://www.cnblogs.com/fogwang/p/12580318.html

时间: 2024-08-29 08:22:26

php 保存编辑器内容中的远程图片为本地图片的相关文章

PHP将Base64图片转换为本地图片并保存

本文出至:新太潮流网络博客 /** * [将Base64图片转换为本地图片并保存] * @E-mial [email protected] * @TIME 2017-04-07 * @WEB http://blog.iinu.com.cn * @param [Base64] $base64_image_content [要保存的Base64] * @param [目录] $path [要保存的路径] */ function base64_image_content($base64_image_c

xheditor1.1.14在asp.net网站开发中作为可上传本地图片的在线编辑器

xheditor是一个基于jQuery开发的跨平台轻量可视化XHTML编辑器,功能强大,使用方便,CSDN网站的发表文章网页就使用了该编辑器,下面介绍在vs2013的环境下开发网页时使用该编辑器并实现本地图片上传的一种方法. 1.网上搜索并下载文件xheditor1.1.1文件包,解压后应该是一个包括jquery.xheditor_emo.t xheditor_plugins. xheditor_skin.demos等文件夹及xheditor-1.1.14-zh-cn.min.js等文件的一个文

怎样扩展EasyUI在页面中马上显示选中的本地图片

在编写前台页面的时候,有时须要将选中的图片夹杂着其它信息一起上传到服务端,在选着本地图片的时候,为了获得更好的效果,须要将该图片显示在页面上. 最初思路有两个.详细例如以下: 1.获取选中文件的二进制数据再传递给画板,画出图片来. 2.获取选中文件的传递给Img标签. 经过測试,得到例如以下结果: 1.Img标签的src无法指向本地路径的文件,这应该是基于安全考虑的结果吧. 2.通过File API 读取的文件二进制数据无法直接传递给Cancav画板画出选中图片,这也许也是基于安全考虑的结果.

如何扩展EasyUI在页面中立即显示选中的本地图片

在编写前台页面的时候,有时需要将选中的图片夹杂着其他信息一起上传到服务端,在选着本地图片的时候,为了获得更好的效果,需要将该图片显示在页面上. 最初思路有两个,具体如下: 1.获取选中文件的二进制数据再传递给画板,画出图片来. 2.获取选中文件的传递给Img标签. 经过测试,得到如下结果: 1.Img标签的src无法指向本地路径的文件,这应该是基于安全考虑的结果吧. 2.通过File API 读取的文件二进制数据无法直接传递给Cancav画板画出选中图片,这或许也是基于安全考虑的结果. 3.经过

android获取拍照图片、本地图片简单实现!

在安卓应用开发中经常会用到调用系统相机拍照跟获取本地图片功能,下面就是对这一常用功能的简单实现Demo! 在获取拍照图片功能中要加上这两权限. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA" /> 布局文件 1 <Re

Codeignight在保存编辑器内容时XSS挖的坑

前台编辑说,后台的ueditor编辑器咋不能居中了,我第一反应是前台的样式过度渲染了编辑内容的元素样式. 前端的反馈是没有,说看源代码里压根就没有设置style <p xss=removed >...</p> 我觉得是ueditor编辑器的过滤设置,于是调了半天ueditor的配置ueditor.config ,xssFilterRules: false //input xss过滤 ,inputXssFilter: false //output xss过滤 ,outputXssFi

Hexo中如何用Markdown插入本地图片

虽然在官方语法中,Markdown插入图片的格式是这样的: ![Alt text](/path/to/img.jpg) 然而,如果你用了Hexo框架,那你得小心了. 为什么要用Hexo,Octopress之类的框架呢?无非是为了让页面更加丰富多彩,以及让操作更加简便.这些用jeklly直接来做是十分繁琐,费时的. 好了,回归正题.首先,你不可能在网页里用绝对路径,这样怎么部署到服务器上呢?所以必定是相对路径.Markdown本来的语法中,只要img和md文件的相对路径是对的就行,然而Hexo不知

动态添加拍照图片、本地图片以及文件

package com.example.filebrowser.activity; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.net.URI; import java.util.ArrayList; import android.net.Uri; import android.os.Bundle; import android.pro

在InternetExplorer.Application中显示本地图片

忘记了,喜欢一个人的感觉 Demon's Blog  ?  程序设计  ?  在InternetExplorer.Application中显示本地图片 ? 对VBS效率的再思考--处理二进制数据 WordPress判断用户是否登录 ? 在InternetExplorer.Application中显示本地图片 标题: 在InternetExplorer.Application中显示本地图片作者: Demon链接: http://demon.tw/programming/internetexplor