fckeditor 如何远程保存图片

jim8590251 2008-11-18 10:22:36
我用的是FckEditor 编辑器,可以支持直接从别人网页上,复制粘贴,不过图片却是别人的地址,我想问的是,如何能远程保存图片呢
...全文
363 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevin09 2009-04-19
  • 打赏
  • 举报
回复
这里有下载:http://www.cn09.com/remository.html?func=fileinfo&id=1
jim8590251 2008-11-21
  • 打赏
  • 举报
回复
我远程保存了图片,在服务器上的文件夹里,也有了该文件,可是这样的图片却是无法浏览的,为什么啊
有时候保存却能够浏览,有时候不行,为什么呢
jim8590251 2008-11-21
  • 打赏
  • 举报
回复
//远程保存图片
//$content 一般是从编辑器里得到的数据
//fasfdsafa<img border='0' src='fasfdsa.jpg'>fafasfafa<img src='http://www.163.com/ddd.jpg' border='0'>fdsafa
function GetPic($content)
{
//$content = "<center><img alt='' border='' src='http://img1.cache.netease.com/catchpic/5/59/59C7363EC8BE50DB4D6DEA15037C111D.jpg' /></center>";
$content = str_replace('\"','"',$content);
//获得编辑器里图片的个数
$picsuma = explode('<img',$content);
$picsum = count($picsuma);//图片的个数就是$picsum-1

for($i=1;$i<$picsum;$i++)
{
//查找SRC的位置
$myfile = strpos($picsuma[$i],'src=');
//查找地址结束位置
$pictype ="";
if(strpos($picsuma[$i],'.jpg')>0)
{
$picend = strpos($picsuma[$i],'.jpg');
$pictype = ".jpg";
}
else if(strpos($picsuma[$i],'.bmp')>0)
{
$picend = strpos($picsuma[$i],'.bmp');
$pictype = ".bmp";
}
else if(strpos($picsuma[$i],'.png')>0)
{
$picend = strpos($picsuma[$i],'.png');
$pictype = ".png";
}
else if(strpos($picsuma[$i],'.gif')>0)
{
$picend = strpos($picsuma[$i],'.gif');
$pictype = ".gif";
}
//return $myfile;
$piclen = $picend - $myfile;
//取得地址
$path = substr($picsuma[$i],$myfile,$piclen).$pictype;//src='fasfdsa1.jpg
$upath = explode("=",$path);
$realpath = substr($upath[1],0,1) == "'"? substr($upath[1],1) : $upath[1];
$realpath = substr($realpath,0,1) == '"'? substr($realpath,1) : $realpath;
//return $realpath;
//根据地址判断是远程还是本地 是http://开头就是远程
if(substr(trim($realpath),0,4) == "http") //远程
{
$newfilepath = GrabImage($realpath);
//新地址改为跟目录,绝对地址
if(substr($newfilepath,0,2) == "..")
{
$newfilepath = substr($newfilepath,2);
}
$content = str_replace($realpath,$newfilepath,$content);
}

}

//去掉所有的连接
//<a href='' tarlll>dfa</a>dfasfdaf<a href=''>dsfsa</a>fdafas

$content = replace_not_appoint_url($content);
return ($content);
}
///给定地址,远程保存图片
//$url 是给定的图片地址 如http://www.welrwl.gaom/fsdfs/sgsa/11.jpg
//$filename 默认是空,怎创建的图片目录为userfiles/年月/dfdsa.jpg,不为空则为指定名命名
function GrabImage($url,$filename="")
{
if($url==""):return false;endif;

if($filename=="")
{
$ext=strrchr($url,".");
if($ext!=".gif" && $ext!=".jpg" && $ext!=".bmp" && $ext!=".png"):return false;endif;
//$filename=date("dMYHis").$ext;
$filename = randoma().$ext;
}
$filename1 = "../UserFiles/".date('Ym')."/".$filename;
$filename2 = "../UserFiles/".date('Ym')."/";
mkdir($filename2,0777);
ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img);

$fp2=@fopen($filename1, "a");
fwrite($fp2,$img);
fclose($fp2);

return $filename1;
}


/**
* 替换非指定的链接
*
* @param string $str // 要过滤的文本
* @param string $top_level_domain // 一级域名,但不包含www 如http://www.google.com 输入google.com
* @return string $str
*/

function replace_not_appoint_url($text, $top_level_domain ='ceiea.com')
{
$top_level_domain_regex = str_replace('.', '\.', $top_level_domain);

//$parten1 = '/<a(.*?)href=("|\')?http:\/\/(.*?)\.?google\.com\/?(.*?)("|\')?(.*?)>(.+?)<\/a>/i';
$parten1 = '/<a(.*?)href=("|\')?http:\/\/(.*?)\.?'.$top_level_domain_regex.'\/?(.*?)("|\')?(.*?)>(.*?)<\/a>/i';
//$parten2 = '<a\\1#Mref#="http://\\3.google.com/\\4"\\5>\\6</a>';
$parten2 = '<a\\1#Mref#=\\2http://\\3.'.$top_level_domain.'/\\4\\5\\6>\\7</a>';
$parten3= '/<a.*?href.*?>(.*?)<\/a>/i';
$text = preg_replace($parten1, $parten2, $text);
$text = preg_replace($parten3, '\\1', $text);
$text = str_replace('#Mref#', 'href', $text);
$text = str_replace('http://.', 'http://', $text);
return $text;
}




有时候能保存,有时候保存不了,不知道为什么????
谁能帮我解答下?
jim8590251 2008-11-20
  • 打赏
  • 举报
回复
///远程保存图片 网页中复制过来的,还没有修改 2008-11-18
function SaveHttpFiles($content)
{
$content =str_replace('\"','',$content);
$content =str_replace('\\','',$content);


preg_match_all ("/<img.+src=('|\"|)?(.*)(\1)([s].*)?>/", $content, $matches);

//print_r($matches);
return $matches[2];

$img_array = array_unique($matches[2]);
set_time_limit(0);
foreach ($img_array as $key => $value)
{
$get_file = @file_get_contents($value);
$filetime = time();
$filepath = "./pic/".date("Y",$filetime)."/".date("m",$filetime)."/";
mkDirE($filepath,777);
$filename = date("YmdHis",$filetime).rand(1,5).'.'.substr($value,-3,3);
$fp = @fopen("$filepath$filename","w");
@fwrite($fp,$get_file);
fclose($fp);
$content = preg_replace("/".addcslashes($value,"/")."/isU", "./pic/".date("Y",$filetime)."/".date("m",$filetime)."/".$filename, $content);
//echo $_POST["content"];

}
return $content;
}


//自动生成目录
function mkDirE($dir,$dirmode=777)
{
if (!empty($dir))
{
if (!file_exists($dir))
{
preg_match_all('/([^/]*)/?/i', $dir,$atmp);
$base="";
foreach ($atmp[0] as $key=>$val)
{
$base=$base.$val;
if(!file_exists($base))
if (!mkdir($base,$dirmode))
{
echo "Error: Cannot create ".$base;
return -1;
}
}
}
else
if (!is_dir($dir))
{
echo "Error: ".$dir." exists and is not a directory";
return -2;
}
}

return 0;

}



哪位牛人帮我这个改改.....
duanjianbo26 2008-11-19
  • 打赏
  • 举报
回复

<?php
//
// Function: 获取远程图片并把它保存到本地
//
//
// 确定您有把文件写入本地服务器的权限
//
//
// 变量说明:
// $url 是远程图片的完整URL地址,不能为空。
// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期
// 自动生成.

function GrabImage($url,$filename="") {
if($url==""):return false;endif;

if($filename=="") {
$ext=strrchr($url,".");
if($ext!=".gif" && $ext!=".jpg"):return false;endif;
$filename=date("dMYHis").$ext;
}

ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img);

$fp2=@fopen($filename, "a");
fwrite($fp2,$img);
fclose($fp2);

return $filename;
}

$img=GrabImage("http://news.bbc.co.uk/images/_1978837_detector_ap100.jpg","");
if($img):echo "<pre><img src="".$img.""></pre>";
else:echo "false";
endif;
?>  
jim8590251 2008-11-18
  • 打赏
  • 举报
回复
我是想从新闻中复制一条到编辑器,然后编辑器里可能有文字,也有图片,然后我点保存的时候,这编辑器里的远程图片就会自动保存到本地,并且路径也会自动改成本地的路径,而不是远程路径,没有人知道么?在线等!~~
Brokenfango 2008-11-18
  • 打赏
  • 举报
回复
将网络图片写到本地
海诗美妆 2008-11-18
  • 打赏
  • 举报
回复
找到图片的地址,如<img src="地址" >

把src="XXX"改成src="http://XX 从网络可以访问的地址"
Brokenfango 2008-11-18
  • 打赏
  • 举报
回复
将远程图片保存到本地的PHP代码可以网上搜 一大堆
Brokenfango 2008-11-18
  • 打赏
  • 举报
回复
保存的时候分析提交的内容 如有图片<img src="http://xx.xx.com/xx/xx.jpg">
远程访问将该图片并将它保存到本地再将“<img src="http://xx.xx.com/xx/xx.jpg">”改成你本地图片的地址
貌似比较麻烦


海诗美妆 2008-11-18
  • 打赏
  • 举报
回复
图片地址是从HTML指定的,
打开HTML源文件,修改地址
jim8590251 2008-11-18
  • 打赏
  • 举报
回复
找到图片的地址,如 <img src="地址" >

把src="XXX"改成src="http://XX 从网络可以访问的地址"

我不明白啊,我是菜鸟,大虾说清楚点可以么?
海诗美妆 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 froole 的回复:]
找到图片的地址,如 <img src="地址" >

把src="XXX"改成src="http://XX  从网络可以访问的地址"
[/Quote]

lz还想要什么答案?
jim8590251 2008-11-18
  • 打赏
  • 举报
回复
我是想从新闻中复制一条到编辑器,然后编辑器里可能有文字,也有图片,然后我点保存的时候,这编辑器里的远程图片就会自动保存到本地,并且路径也会自动改成本地的路径,而不是远程路径,没有人知道么?在线等!~~

20,358

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧