问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

thinkphp作为服务器端获取上传的图片并保存的接口怎么写?

发布网友 发布时间:2022-04-07 09:20

我来回答

2个回答

懂视网 时间:2022-04-07 13:41

部署源码之后自行修改账号密码为自己的新浪账号

<?php
/**
 * 上传图片到微博图床
 * @author Youngxj & mengkun & 阿珏
 * @param $file 图片文件/图片url
 * @param $multipart 是否采用multipart方式上传
 * @return 返回的json数据
 * @code 200:正常;201:错误;203:cookie获取失败;404:请勿直接访问
 * @ps 图片尺寸可供选择:square、thumb150、orj360、orj480、mw690、mw1024、mw2048、small、bmiddle、large 默认为:thumb150,请自行替换
 */
header("Access-Control-Allow-Origin:*");
header('Content-type: application/json');
error_reporting(0);
if (!is_file('sina_config.php')) {
 CookieSet('SUB;','0');
}
include 'sina_config.php';
//账号
$sinauser = 'admin';
//密码
$sinapwd = 'password';
if (time() - $config['time'] >20*3600||$config['cookie']=='SUB;') {
 $cookie = login($sinauser,$sinapwd);
 if($cookie&&$cookie!='SUB;'){
 CookieSet($cookie,$time = time());
 }else{
 return error('203','获取cookie出现错误,请检查账号状态或者重新获取cookie');
 }
}
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {exit;}
$type=$_GET['type'];
if($type=='multipart'){
 $multipart = true;
 $file = $_FILES["file"]["tmp_name"];
}elseif(isset($_GET['img'])){
 $multipart = false;
 $file = $_GET['img'];
}else{
 return error('404','请勿直接访问');
}
if (isset($file) && $file != "") {
 include 'sina_config.php';
 $cookie = $config['cookie'];
 echo upload($file, $multipart,$cookie);
}else{
 return error('201','上传错误');
}

function CookieSet($cookie,$time){
 $newConfig = '<?php 
 $config = array(
 "cookie" => "'.$cookie.'",
 "time" => "'.$time.'",
 );';
 @file_put_contents('sina_config.php', $newConfig);
}

function error($code,$msg){
 $arr = array('code'=>$code,'msg'=>$msg);
 echo json_encode($arr);
}
/**
 * 新浪微博登录(无加密接口版本)
 * @param string $u 用户名
 * @param string $p 密码
 * @return string 返回最有用最精简的cookie
 */
function login($u,$p){
 $loginUrl = 'https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543';
 $loginData['entry'] = 'sso';
 $loginData['gateway'] = '1';
 $loginData['from'] = 'null';
 $loginData['savestate'] = '30';
 $loginData['useticket'] = '0';
 $loginData['pagerefer'] = '';
 $loginData['vsnf'] = '1';
 $loginData['su'] = base64_encode($u);
 $loginData['service'] = 'sso';
 $loginData['sp'] = $p;
 $loginData['sr'] = '1920*1080';
 $loginData['encoding'] = 'UTF-8';
 $loginData['cdult'] = '3';
 $loginData['domain'] = 'sina.com.cn';
 $loginData['prelt'] = '0';
 $loginData['returntype'] = 'TEXT';
 return loginPost($loginUrl,$loginData); 
}

/**
 * 发送微博登录请求
 * @param string $url 接口地址
 * @param array $data 数据
 * @return json  算了,还是返回cookie吧//返回登录成功后的用户信息json
 */
function loginPost($url,$data){
 $tmp = '';
 if(is_array($data)){
 foreach($data as $key =>$value){
 $tmp .= $key."=".$value."&";
 }
 $post = trim($tmp,"&");
 }else{
 $post = $data;
 }
 $ch = curl_init();
 curl_setopt($ch,CURLOPT_URL,$url); 
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
 curl_setopt($ch,CURLOPT_HEADER,1);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
 curl_setopt($ch,CURLOPT_POST,1);
 curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
 $return = curl_exec($ch);
 curl_close($ch);
 return 'SUB' . getSubstr($return,"Set-Cookie: SUB",'; ') . ';';
}

/**
 * 取本文中间
 */
function getSubstr($str,$leftStr,$rightStr){
 $left = strpos($str, $leftStr);
 //echo '左边:'.$left;
 $right = strpos($str, $rightStr,$left);
 //echo '<br>右边:'.$right;
 if($left <= 0 or $right < $left) return '';
 return substr($str, $left + strlen($leftStr), $right-$left-strlen($leftStr));
}


function upload($file, $multipart = true,$cookie) {
 $url = 'http://picupload.service.weibo.com/interface/pic_upload.php'.'?mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=0&marks=1&app=miniblog';
 if($multipart) {
 $url .= '&cb=http://weibo.com/aj/static/upimgback.html?_wv=5&callback=STK_ijax_'.time();
 if (class_exists('CURLFile')) { // php 5.5
 $post['pic1'] = new CURLFile(realpath($file));
 } else {
 $post['pic1'] = '@'.realpath($file);
 }
 } else {
 $post['b64_data'] = base64_encode(file_get_contents($file));
 }
 // Curl提交
 $ch = curl_init($url);
 curl_setopt_array($ch, array(
 CURLOPT_POST => true,
 CURLOPT_VERBOSE => true,
 CURLOPT_RETURNTRANSFER => true,
 CURLOPT_HTTPHEADER => array("Cookie: $cookie"),
 CURLOPT_POSTFIELDS => $post,
 ));
 $output = curl_exec($ch);
 curl_close($ch);
 // 正则表达式提取返回结果中的json数据
 preg_match('/({.*)/i', $output, $match);
 if(!isset($match[1])) return error('201','上传错误');
 $a=json_decode($match[1],true);
 $width = $a['data']['pics']['pic_1']['width'];
 $size = $a['data']['pics']['pic_1']['size'];
 $height = $a['data']['pics']['pic_1']['height'];
 $pid = $a['data']['pics']['pic_1']['pid'];
 if(!$pid){return error('201','上传错误');}
 $arr = array('code'=>'200','width'=>$width,"height"=>$height,"size"=>$size,"pid"=>$pid,"url"=>"http://ws3.sinaimg.cn/thumb150/".$pid.".jpg");
 return json_encode($arr);
}

热心网友 时间:2022-04-07 10:49

就这么写:
上传操作
ThinkPHP文件上传操作使用Think\Upload类,假设前面的表单提交到当前控制器的upload方法,我们来看下upload方法的实现代码:
public function upload(){ $upload = new \Think\Upload();// 实例化上传类 $upload->maxSize = 3145728 ;// 设置附件上传大小 $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 $upload->rootPath = './Uploads/'; // 设置附件上传根目录 $upload->savePath = ''; // 设置附件上传(子)目录 // 上传文件 $info = $upload->upload(); if(!$info) {// 上传错误提示错误信息 $this->error($upload->getError()); }else{// 上传成功 $this->success('上传成功!'); }}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
kmose正确使用方法? 单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 撒尿牛丸是怎样制作的? 撒尿肉丸怎么做才好吃 撒尿牛肉丸制作方法 撒尿牛肉丸子是怎么做的呀? 如何制作撒尿牛丸? 撒尿牛丸怎么做好吃,撒尿牛丸的吃法 撒尿肉丸怎么做 一般如何做撒尿牛肉丸 撒尿牛肉丸的做法 撒尿牛丸怎么做 撒尿牛肉丸的制作方法 鲜美撒尿牛丸怎么做好吃又简单,做法图解 华为荣耀9耗电太快了!怎么解决? 为啥华为8X还不到一年就充电快耗电也快了? 干粉灭火器主要适用于扑救哪些物质的火灾? 动易6.8全功能商业版和官方同步0918版,有没有自定义上传图片接口? 干粉灭火器晶否与一般合成泡沫灭火器联用? 干粉灭火器能和二氧化碳联用? 新加坡国立大学 多多回答 多多资料 vivo账号换绑多久可以申诉 怎么进行vivo帐号自助申诉 百度云会员在线解压是什么意思啊? 虚拟主机的在线解压打包使什么意思? 在线压缩是什么 怎么用在线解压文件 关闭蚂蚁森林能量被清除,如何恢复? 蚂蚁森林能量被清零了 怎么能找回丢失能量? 蚂蚁森林不小心关闭了,以前的能量全部都没有了怎么办? 我朋友开直播,为什么别人能看到,我抖音号看不到了?- 问一问 蚂蚁森林被不小心关闭了,能源被清零了,怎么样才能恢复 iphone如何变半屏 蚂蚁森林复活的能量如果没有怎么办? 蚂蚁森林关闭后再打开能量会恢复吗 蚂蚁森林删除后又加上删除前的能量能找回来吗? 为什么抖音上能看到他直播却看不到他别的内容? 我的绿色能量为什么不能坚持三天,只要第二天那个时间点没收,它就消失了,很困惑 网易云音乐为什么对方共享歌单直接拉我进去了 网易云我创建共享歌单别人能不能收藏歌进去 请问这些尺寸里有五寸照片的尺寸吗?如果有,请问是哪个,如果没有,我现在想打印五寸照片,请问如何设置