IT教程 | 加入收藏 | 简体 | 繁体
编辑器:Dreamweave...PhotoShopGit&FTP编辑器
当前位置: 首页 > 工具教程 > 编辑器

发布文章时自动保存远程图片,Kindeditor转存远程图片,Kindeditor保存外链图片

2016-10-26来源:[www.121ask.com]热度:0℃ 【字体:

发布文章时希望把远程的图片保存到本地,这样的问题相信很多人都遇到过,思考了下并做了初步的尝试,方法还不够完美,但已经实现功能,优化那是以后的事情了。

说说星际尘埃网站上的解决方案。

大体思路是,提交文章前,获取html代码,提取其中的远程图片地址,通过ajax调用php程序对它们进行保存,并返回地址,用新图片地址替换远程地址,提交文章。

用的技术有:javascript的带正则的replace函数,ajax同步保存图片,php的保存远程文件,php返回json数据等

下面给出代码,先是前端代码,后是php代码,配合注释看,希望能理解吸收,还有我用的编辑器是kindeditor,简单又好用的一个编辑器:

1 function checkForm() {//如果勾选了需要保存远程图片则进入保存远程图片函数
2 if ($("#cboxSaveRomote")[0].checked) {
3 saveRomoteImgs();
4 }
5 KE.util.setData("content1");
6 return true;
7 }
8  
9 function saveRomoteImgs() {
10 var imgcount = 0;
11 var content = KE.html("content1");//得到html代码
12 content = content.replace(/src=['"][^'"]+(.bmp|.jpg|.jpeg|.gif|.png)['"]/ig,function(matchword){
13 imgcount++;
14 showInfoWindow("图片"+imgcount+"保存开始");//显示提示框
15 matchArray = /src=['"]([^'"]+)['"]/i.exec(matchword);
16 var newimgpath = 'src="'+matchArray[1]+'"';
17 $.ajax({
18 async:false,//这个很重要,要同步ajax,设为true的话是不等返回的
19 url:"upload/save_remote_image.php",
20 type:"POST",
21 data:{imgurl:matchArray[1],referbase:$("#txtReferbase").val()},
22 dataType:"json",
23 timeout:10000,
24 cache:false,
25 success:function(result){
26 if (result.error) {
27 showInfoWindow("图片"+imgcount+"保存失败1("+result.message+")");
28 //newimgpath = 'src="'+matchArray[1]+'"';
29 else {
30 showInfoWindow("图片"+imgcount+"保存成功");
31 newimgpath = 'src="'+result.url+'"';
32 }
33 },
34 error:function(request, status, error){
35 showInfoWindow("图片"+imgcount+"保存失败2("+status+";"+error+")");
36 //newimgpath = 'src="'+matchArray[1]+'"';
37 }
38 });
39 return newimgpath;
40 });
41 KE.html("content1", content);//把修改好的html内容再保存
42 clearInfoWindow();//关闭提示框
43 }

好,下面给出url:”upload/save_remote_image.php”,访问的php程序:

1 <?php
2  
3 require_once 'JSON.php';
4  
5 session_name("lscj_session");
6 session_start();
7 if (!isset($_SESSION['username']))
8 {
9  session_destroy();
10  alert("用户信息丢失,请重新登录!");
11 }
12  
13 if (empty($_POST['imgurl'])) {
14  alert("imgurl为空!");
15 }
16  
17 $phpbb_root_path "../../../";
18 //图片显示路径
19 $imgShowPath "http://www.iseexn.com/attachments/".date('Y').'/'.date('m').'/';
20 //图片保存路径
21 $imgStorePath $phpbb_root_path.'attachments/'.date('Y').'/';
22 if (!is_dir($imgStorePath)) {
23  mkdir($imgStorePath,0777);
24 }
25 $imgStorePath .= date('m').'/';
26 if (!is_dir($imgStorePath)) {
27  mkdir($imgStorePath,0777);
28 }
29  
30 $imgurl $_POST['imgurl'];
31 $referbase $_POST['referbase'];
32  
33 if (0 === stripos($imgurl"http") || 0 === stripos($imgurl"//")) {
34 else {
35  if (empty($referbase)) {
36  alert("referbase为空!");
37  else {
38  $imgurl $referbase.$imgurl;
39  }
40 }
41 if (false !== stripos($imgurl"//www.iseexn.com")) {
42  header('Content-type: text/html; charset=utf-8');
43  $json new Services_JSON();
44  echo $json->encode(array('error' => 0, 'url' => $imgurl));
45 }
46  
47 $filetype = getFiletype($imgurl);
48 if (empty($filetype)) {
49  alert("图片类型为空!");
50 }
51 $newimgname = time().'_'.rand(1000, 9999).".".$filetype;
52 $newimgpath $imgStorePath.$newimgname;
53  
54 set_time_limit(0);
55 $get_file = @file_get_contents($imgurl);
56 if ($get_file) {
57  $fp = @fopen $newimgpath'w');
58  @fwrite ( $fp$get_file);
59  @fclose ( $fp);
60  
61 header('Content-type: text/html; charset=utf-8');
62  $json new Services_JSON();
63  echo $json->encode(array('error' => 0, 'url' => $imgShowPath.$newimgname));
64  
65 exit;
66 else {
67  alert("获取图片失败!");
68 }
69  
70 function getFiletype($filename) {
71  $tempArray explode(".",$filename);//分割字符串
72  if (count($tempArray)>1) {
73  $fileType $tempArray[count($tempArray)-1];//得到文件扩展名
74  return $fileType;
75  }
76  return "";
77 }
78  
79 function alert($msg) {
80  header('Content-type: text/html; charset=utf-8');
81  $json new Services_JSON();
82  echo $json->encode(array('error' => 1, 'message' => $msg));
83  exit;
84 }
以上IT文章《发布文章时自动保存远程图片,Kindeditor转存远程图片,Kindeditor保存外链图片》由名客技术网[www.121ask.com]提供阅读!
名客技术网是一个免费为广大IT技术人员提供IT教程,绿色软件,asp/php/jsp/java/net等实例视频教程,CMS教程,破解软件下载以及学习相关源码、知识的IT网站。
名客技术网如果无意之中侵犯了您的版权,请来电告知,本站将在3个工作日内删除 QQ:175352796
Copyright 2011-2017 Powered by 121ASK.COM, All Rights Reserved.
备案号:鄂ICP备11013833号-1