twcms二开,实现图片远程发布到贴图库
之前有想过做个美女图片站试试,但是一直没有机会,主要还是因为太吃硬盘和带宽的事。
偶然在嘀嗒萌工作过程中得知了贴图库这个东西,真是个好东西啊。
官方提供了api接口,只需要对接一下,就可以把图片发到贴图库了。
我之前也一直很推崇twcms,原因就在这里就不讲了,不是重点,直接上代码
打开admin/control/article_control.class.php 文件
大约在600行左右找到
private function auto_pic($table, $uid, $id = 0) {将整个function替换为
private function auto_pic($table, $uid, $id = 0) { $pic_arr = $this->cms_content_attach->find_fetch(array('id'=>$id, 'uid'=>$uid, 'isimage'=>1), array(), 0, 1); $pic_arr = current($pic_arr); $cfg = $this->runtime->xget(); $path = $pic_arr['filepath']; $pic = image::thumb_name($path); $src_file = TWCMS_PATH.$path; $dst_file = TWCMS_PATH.$pic; if(!is_file($dst_file)) { image::thumb($src_file, $dst_file, $cfg['thumb_'.$table.'_w'], $cfg['thumb_'.$table.'_h'], $cfg['thumb_type'], $cfg['thumb_quality']); } return $path; }对接的后台发布路径 打开/twcms/model/cms_content_attach_model.class.php 文件 大约在45行找到
public function remote_down($uri, &$conf) {替换整个try为
try{ // 抓取远程图片 $context = stream_context_create(array('http'=>array('follow_location'=>false, 'timeout'=>60))); // 不重定向抓取 //$img = file_get_contents($uri, false, $context); // 图片大小验证 $filesize = strlen($img); $maxSize = $conf['maxSize']*1024; if($filesize > $maxSize) return FALSE; // 创建图片目录 //$dir = date('Ym/d/'); //$updir = $conf['upDir'].$dir; //if(!is_dir($updir) && !mkdir($updir, 0755, true)) { // return FALSE; //} // 图片写入自己的服务器 //$filepath = $dir.date('His').uniqid().random(6, 3).'.'.$fileExt; //if(!file_put_contents($conf['upDir'].$filepath, $img)) return FALSE; //图片上传到贴图库 $time60 =time()+60; $tokens = '贴图库获取到token'; $post_data = array( 'Token='.$tokens, 'deadline='.$time60, 'aid=相册ID', 'fileurl='.$uri, ); //print_r($post_data); $post_data = implode('&',$post_data); $url='http://up.tietuku.com/'; $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL,$url); //传递一个作为HTTP “POST”操作的所有数据的字符串。 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); ob_start(); curl_exec($ch); $result = ob_get_contents() ; ob_end_clean(); //开始解析json $exiturl=json_decode($result); //print_r($exiturl); //echo '这是一个贴图库的上传演示,用以集成到cms编辑器内实现自动转存图片的功能。<br>图片地址为:'.$exiturl->linkurl; //图片上传结束 $filepath = $exiturl->linkurl; // 记录到数据库 $data = array( 'cid' => $conf['cid'], 'uid' => $conf['uid'], 'id' => $conf['id'], 'filename' => basename($uri), 'filetype' => $fileExt, 'filesize' => $filesize, 'filepath' => $filepath, 'dateline' => $_ENV['_time'], 'downloads' => 0, 'isimage' => 1, ); if(!$this->create($data)) return FALSE; return $exiturl->linkurl; }token在这里获取http://open.tietuku.com/createtoken 对应相册ID,获取token,贴入到相应位置。 进入后台清除缓存。 发布文章的时候选择远程图片本地化,会直接把图片转存到贴图库。 补:使用此方法后不得开启图片水印功能 2016-01-13 PS:由于受PHP运行和服务器配置限制,此方法已经放弃,改用火车头插件模式,保证100%不失败。传送门http://www.skyerblog.com/article/2705.html
aaaaaaaa