发布接口
这个接口接收发布数据。
接口代码如下:
//数据接收接口
function post_data(){
$result_data = array('status' => 0, 'msg'=> 'ok', 'data' => array());
$attach_temp_dir = DXC_API_DIR.'/data/';//图片临时目录,跟attach_upload保持一致
//这一步主要是接收post过来的数据
$post_data = dxcsdk::get_post_data($attach_temp_dir);
/*
$post_data数据结构说明:
$post_data['post_config'] 存放辅助设置
$post_data['field_data'] 存放字段数据,比如 $post_data['field_data']['title']是获取标题,如果一个字段是循环获取,有多条,那么$post_data['field_data']['title']就是一个数组
$post_data['attach_list'] 存放附件信息, 比如 $post_data['attach_list']['title'] 存放的是title的附件信息。
*/
if(empty($post_data['field_data']['title']) || empty($post_data['field_data']['content'])){
$result_data['status'] = -1;
$result_data['msg'] = '标题或内容不能为空';
return $result_data;
}
//如果之前文章发布过,data_id会有数据,可以利用这个id,进行一些旧数据的删除工作
if(!empty($post_data['data_id'])){
}
//处理附件
$imagereplace = array();
$content = $post_data['field_data']['content'];
$attach_arr = $post_data['attach_list']['content'];
/*
附件数据格式:
alt img的alt属性
ext 文件扩展名,比如jpg
fileName 文件名。比如 46532df71da3cc1fc003938d322c9bb9.jpg
width img的width属性
height img的height属性
isimage 是否是图片 1代表图片 0,不是图片
ref 占位符 <!--IMG#0_0-->
size 文件大小
url 文件或图片路径
*/
//处理a标签
foreach($attach_arr as $key => $attach_info){
if($attach_info['isimage'] == 1){
continue;
}
$text = $attach_info['text'] ? $attach_info['text'] : $attach_info['url'];
$imagereplace['search'][$key] = $attach_info['ref'];
$imagereplace['replace'][$key] = '<a href="'.$attach_info['url'].'" >'.$text.'</a>';
if(empty($attach_info['content']) || empty($attach_info['ext'])) {
continue;
}
//这个地方自己实现
$attach_data = $this->attach_add($attach_info);
$imagereplace['replace'][$key] = '<a href="'.$attach_data['url'].'" >'.($text ? $text: $attach_data['url']).'</a>';
}
$content = str_replace($imagereplace['search'], $imagereplace['replace'], $content);
$imagereplace = array();
//处理img标签
foreach($attach_arr as $key => $attach_info){
if($attach_info['isimage'] == 0){
continue;
}
$imagereplace['search'][$key] = $attach_info['ref'];
$imagereplace['replace'][$key] = '<img src="'.$attach_info['url'].'" alt="'.$attach_info['text'].'" />';
if(empty($attach_info['content']) || empty($attach_info['ext'])) {
continue;
}
//这个地方自己实现
$attach_data = $this->attach_add($attach_info);
$imagereplace['replace'][$key] = '<img src="'.$attach_data['url'].'" alt="'.$attach_info['text'].'" />';
}
$content = str_replace($imagereplace['search'], $imagereplace['replace'], $content);
//添加文章
//数据发布成功之后,返回两个东西
//data_url 发布之后的文章地址
//data_id 发布之后的文章id
$result_data['data']['data_url'] = '';
$result_data['data']['data_id'] = '123';
return $result_data;
}
//添加附件(自己实现)
function attach_add(){
}
整个流程分为几个步骤:
1、接收post数据,包括读取临时目录里面的图片数据,这一步一行代码搞定:
$post_data = dxcsdk::get_post_data($attach_temp_dir);
2、旧数据删除或更新。比如一篇文章发布过了,如果再发布一次,得删除旧数据,或者更新。防止重复。
如果发布过,$post_data['data_id'] 会保存id。根据这个id,就知道数据库对应的文章。
3、处理附件。
文章里面的内容,img、a标签,全部使用占位符。比如
文章里面的图片,原始代码会是这样:
<p align="center"><!--IMG#0_0--></p>
其中
<!--IMG#0_0-->
就是占位符。利用这个占位符,读取对应的附件信息,然后进行填充。还原出原始的图片代码
分析数据结构可以看到对应的附件信息存放路径:
4、添加数据到数据库,返回两个东西,一个是发布之后到文章地址,一个是文章id。
$result_data['data']['data_url'] = '';
$result_data['data']['data_id'] = '123';