此源码转自网络,代码为 PHP 版本,调用搜狗图片上传。
此代码为 PHP 类,请自行下载研究。
- <?php
- namespace app\home\controller;
- use app\home\controller\Common;
- class Upload extends Common{
- public function _empty(){
- phpinfo();
- }
- public function image(){
- $fileExt=['gif','jpeg','jpg','png'];
- $MaxfileSize=1024*1024*2;
- if(isset($_FILES["file"])){
- $extension=pathinfo($_FILES["file"]['name'])['extension'];
- if($_FILES['file']['size']==0){
- $this->error('未知系统错误');
- return ;
- }
- if(!in_array($extension,$fileExt)){
- $this->error('只支 JPG/GIF/PNG/JPEG 文件');
- return ;
- }
- if($_FILES['file']['size']>=$MaxfileSize){
- $this->error('图片大小不能超过 2MB');
- return ;
- }
- //临时文件保存目录
- $ImageCachePath=RUNTIME_PATH.'image/';//缓存路径
- if(!is_dir($ImageCachePath)){//不存在,创建文件夹
- mkdir($this->path, 777, true);
- }
- //生成新文件名
- $newFileName=$ImageCachePath.md5(rand(10000,99999)).'.'.$extension;
- //把文件存入临时目录
- if(!move_uploaded_file($_FILES["file"]["tmp_name"],$newFileName)){
- unlink($newFileName);
- $this->error('上传失败!代码 100');
- return ;
- }
- //接口地址
- $UploadUrl = 'http://pic.sogou.com/ris_upload?r='.rand(10000,99999);
- //取出临时目录上传的文件
- $curlPost = array('pic_path'=>new \CurlFile($newFileName));
- //模拟上传开始
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $UploadUrl);
- // curl_setopt($ch, CURLOPT_HEADER, 1);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_POST, 1); //POST 提交
- curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);
- $data =curl_exec($ch);
- curl_close($ch);
- //Urldecode 解码字符串
- $NewData=urldecode($data);
- //匹配出结果
- preg_match('/query\=(.*?)\&oname/i',$NewData,$ImageUrl);
- if(!isset($ImageUrl[1])){
- unlink($newFileName);
- $this->error('上传失败!代码 200');
- return ;
- }
- //返回 Url,并且删除文件
- unlink($newFileName);
- $this->success('上传成功!',$ImageUrl[1]);
- return ;
- }
- }
- }
评论