PHP 他人服务器图片二进制流上传到自己的图片云空间

如果你在后台拿到了别人服务器上的图片要上传到自己云空间上,那么就需要在后台上传图片,所以需要用CURL来进行上传。

/*** 图片上传* @author Dong* @date   2018-04-08* @param  [type]     $url  文件路径* @param  [type]     $type 文件类型*/function upload_im_img($url,$type){// 二进制文件上传$file= file_get_contents($url);$filename = 'Filedata';//上传到$_FILES数组中的 key $name = uniqid('',true).'.'.$type;//文件名 $type = 'image/jpeg';//文件类型 $key = "$filename\"; filename=\"$name\r\nContent-Type: $type\r\n"; $fields[$key] = $file;  //将图片上传到七牛返回图片路径$ch = curl_init ();$url = 'http://你的域名.com/api/uploadqiniu.html';  curl_setopt ( $ch, CURLOPT_SAFE_UPLOAD, false);  curl_setopt ( $ch, CURLOPT_URL, $url );  curl_setopt ( $ch, CURLOPT_POST, 1 );  curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );  $filename= curl_exec ( $ch );//$filename = substr($filename,3);//进行截取return  $fileurl;}

我这个上传的是二进制流图片  如果是文字的话需要改变$type 和 ¥name的后缀。我这里的url是TP自己的上传图片类 只不过改了配置直接上传到了七牛云空间,然后返回的是图片名字。注意的是$fileurl我返回的时候前面总会有一个红色的点所以我进行了截取(最后发现了哪里有问题导致有红点的,是database文件的编码有问题了,所以这段代码没有用)。

function uploadqiniu(){$exts = array('bmp','jpg', 'tif','tiff','gif', 'png', 'jpeg','xls','xlsx','dwg','dxf','hom','zip','txt','max','3ds','obj','fbx');if (!empty($_FILES)) {//图片上传设置$config = array('maxSize'    =>    30*1024*1024, //设置附件上传大小  30MB = 31457280;'savePath'   =>    '','saveName'   =>    array('uniqid',''),//'exts'       =>    $exts,'autoSub'    =>    false,'subName'    =>    '',//保存后缀,);$driverConfig = array ('accessKey' => C('PIC_AK'),'secretKey' => C('PIC_SK'),'domain' => C('PIC_DOMAIN'),'bucket' => C('PIC_BUCKET'),);$Upload = new \Think\Upload($config,'Qiniu',$driverConfig);$return_img = $Upload->upload($_FILES);//判断是否有图if($return_img){$filename = $return_img['Filedata']['savename'];echo $filename;}else{$this->error($Upload->getError());//获取失败信息}}}

图片直接上传到七牛很简单直接Upload方法后面多加2个参数,好了就这么实现了。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部