您现在的位置是:首页 >学无止境 >php数据采集接口网站首页学无止境
php数据采集接口
简介php数据采集接口
采集接口目标:不依赖任何框架,接收数据,插入数据,读取远程图片下载到本地服务器空间。
一:数据传输操作原生代码
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
//连接数据库
$conn=mysqli_connect('localhost','root','','ghw','3306');
$sql="insert into student values('12','eren','男','21','软件技术')";
mysqli_select_db($conn,'ghw');
mysqli_set_charset($conn,'utf8');
//$insert=mysqli_query($conn,$sql);
if(isset($_POST['submit'])){
$sql = "insert into message(user,title,content,lastdata)".
"values ('$_POST[user]','$_POST[title]','$_POST[content]',now())";
mysqli_query($conn,$sql);
//echo "<script>alert('添加成功');history.go(-1)</script>";
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 二进制流 上传图片(测试成功)
本地代码:
<?php
$imgurl='D:phpstudy_proWWWimg11.jpg'; //图片路径 一定要本地绝对路径
$postData['fileMD5'] = md5_file($imgurl); //文件唯一标识
$postData['file']=new CURLFile($imgurl); //文件流
$url="/test6.php";
$request = ImgRequestCurl($postData,$url);
var_dump($request);exit;
//请求方法
function ImgRequestCurl($params,$url){
set_time_limit(0);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$header = array('Content-Type: multipart/form-data'); //请求头记得变化-不同的上传方式
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$output = curl_exec($ch);
curl_close($ch);
var_dump($output);
$output = json_decode($output,true);
return $output;
}
远程接收代码:在以下代码设置远程服务器的图片路径
<?php
// 允许上传的图片后缀
$file=$_POST['fileMD5'];
if($file=="82eef332f93d684cf93dffa1e5045ae2"){
//自己看需要判断不
$data['msg']= " 文件已经存在。 ";
echo json_encode($data);exit;
}
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp); // 获取文件后缀名
$data['status']=-1;
if ($_FILES["file"]["error"] > 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,二进制流文件</span>
$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的使用方法
五、原始图片上传代码
六、非原生利用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博客
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。