发布接口

这个接口接收发布数据。

接口代码如下:

//数据接收接口
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';
Copyright © DXC采集 2016 all right reserved,powered by Gitbook该文件修订时间: 2017-02-12 12:47:30

results matching ""

    No results matching ""