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个参数,好了就这么实现了。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
