php数据采集接口

采集接口目标:不依赖任何框架,接收数据,插入数据,读取远程图片下载到本地服务器空间。之所以这样,是因为运行速度更快,项目兼容性更高。

一:数据传输操作原生代码



alert('添加成功');history.go(-1)";

        if($insert){
            echo '成功插入数据';
        }else{
            echo '插入数据失败';
        }
		
}


//下载图片
function download($url, $path = 'images/')

{

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);

$file = curl_exec($ch);

curl_close($ch);

$filename = pathinfo($url, PATHINFO_BASENAME);

$resource = fopen($path . $filename, 'a');

fwrite($resource, $file);

fclose($resource);

}

那在下载远程图片的时候就可以这样:

foreach ( $images as $url ) {

download($url);

}



 

二、图片传输原生代码(本地传远程):PHP 二进制流 上传图片(测试成功)

本地代码:

远程接收代码:在以下代码设置远程服务器的图片路径

 0)
    {
        $data['msg']= $_FILES["file"]["error"];
        echo  json_encode($data);exit;
    }
    else
    {
        $data['name']=$_FILES["file"]["name"];
        $data['type']= $_FILES["file"]["type"] ;
        $data['size']= $_FILES["file"]["size"] / 1024 ;
        $data['tmp_name']=$_FILES["file"]["tmp_name"]  ;
        // 判断当期目录下的 upload 目录是否存在该文件
        // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
        if (file_exists("upload/" . $_FILES["file"]["name"]))
        {
            $data['msg']=$_FILES["file"]["name"] . " 文件已经存在。 ";
            echo  json_encode($data);exit;
        }
        else
        {
            // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
            $data['msg']="文件存储在: " . "upload/" . $_FILES["file"]["name"];
            echo  json_encode($data);exit;
        }
        echo  json_encode($data);exit;
    }
 
 
 

三、图片传输原生代码(远程传远程):PHP 二进制流 上传图片(测试成功)

1.获取远程图片

/**

$path保存图片的地址

$url要获取的远程图片地址

**/

function getimg($path,$url){

$aext = explode('.', $url);
$ext = end($aext);

$name = $path.'/'. time() . '.' . $ext;
$source=file_get_contents($url);
file_put_contents($name,$source);
return $name;
}

2.上传图片

/**

$posturl上传图片的地址

$path本地图片所在的地址

**/

function postimg($posturl,$path){

$obj = new CurlFile($path);
$obj->setMimeType("application/octet-stream");//必须指定文件类型,否则会默认为application/octet-stream,二进制流文件
    $post['Filedata'] =  $obj;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, false);
    //启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
    curl_setopt($ch, CURLOPT_URL, $posturl);//上传类
    $info= curl_exec($ch);
    curl_close($ch);
    return $info;
}

四、集合thinkphp的使用方法

秋码分享 | PHP使用curl上传文件到远程服务器接口

五、原始图片上传代码

PHP 文件上传 | 菜鸟教程

六、非原生利用wordpress的函数获取远程图片并上传

public function save_image($parent_id, $filepath){
        //使用函数将远程图片获取到wordpress服务器端
        $get = wp_remote_get ( $filepath );
        //获取文件格式
        $type = wp_remote_retrieve_header ( $get , 'content-type' );
         
        //判断是否图片格式文件
        if( is_numeric(strpos( $type,'image'))){
         
           //进行文件重命名,并用MD5进行命名混淆
            $file_title = md5 ( date ( 'Ymd' , time () ) . mt_rand ( 1000 , 9999 ) );
            //拼接文件地址
            $file_name = $file_title . substr ( $filepath , strrpos ( $filepath , "." ) );
            //
            $file_content = wp_remote_retrieve_body ( $get );
            $mirror = wp_upload_bits ( $file_name , null , $file_content );
         
            //写入特色图片需要的数据
            $thum[ 'post_author' ] = 1;//发布者ID
            $thum[ 'post_title' ] = $file_title;//文章标题
            $thum[ 'post_parent' ] = $parent_id;
            $thum[ 'guid' ] = $mirror[ 'url' ];
            $thum[ 'post_type' ] = 'attachment';
            $thum[ 'post_mime_type' ] = $type;
            $thum[ 'post_status' ] = 'inherit';//文章状态
            //以文章形式写入到数据库
            $attachment_id = wp_insert_post ( $thum );
            set_post_thumbnail ( $parent_id , $attachment_id );
            update_post_meta ( $parent_id , '_thumbnail_id' , $attachment_id );
         
            update_post_meta($attachment_id,'_wp_attached_file', ltrim( wp_upload_dir()['subdir'],'/') .'/'.$file_name );
            $attach_data = wp_generate_attachment_metadata( $attachment_id, ltrim( wp_upload_dir()['path'],'/') .'/'.$file_name );
            wp_update_attachment_metadata( $attachment_id, $attach_data  );
        }
    }

参考网址:

1、php图片上传api文件流方式传递_php 文件流_PHP隔壁老王邻居的博客-CSDN博客

2、php获取远程图片模拟post,file上传到指定服务器_银月 rey的博客-CSDN博客

3、PHP CURLFile函数模拟实现文件上传展示 - 腾讯云开发者社区-腾讯云

4、[PHP] CURL 的各种骚使用(GET,POST,上传下载图片,带认证,带COOKIE) - 掘金

你可能感兴趣的:(php,数据库,开发语言)