额,最近呢,再为公司写上传这一块,用上了网宿科技的云存储,然后发现网上的资料太少了,文档也写的挺模糊的,花了一些时间去写,感觉挺好的所以给大家整理整理,额小白一个,写的不好多多指出。废话不多说上代码。
这是他们的上传模式,和七牛差不多
config里面要配置的东西
先用thinkphp自带的上传,可以把图片限制啊,啥的放里面。
我说有的配置都放config里面了,这样方便改。
$bucket = C('BucketName');#你的空间名字
$file['filename'] = 'Uploads/images/' . $info['Filedata']['savename'];#文件名字
$str['scope']=$bucket.':'.$file['filename'];#文件名字
$str['deadline']='1906429276000';#截止时间,尽量久点,这个是token起时间
#这个$str可以写挺多的我会把图片,放下面
$file['file'] = $_SERVER['DOCUMENT_ROOT'] . '/Uploads/images/' . $info['Filedata']['savename'];// 文件
$info['Filedata']['savename'] = $this->uploadwangsu($file,$str);#拿到图片了
这个是$str里面可以放的东西,一定要转成json格式
https://wcs.chinanetcenter.com/document/API/Token/UploadToken 这个是图片解释的详细地址
#这些不能少
use Wcs\Upload\ResumeUploader;
use Wcs\Http\PutPolicy;
use Wcs\Utils;
use Wcs\Upload\Uploader;
// 网宿上传
private function uploadwangsu($file,$str)
{
require('./Wangsu/autoload.php');
require('./Wangsu/src/Wcs/Upload/Uploader.php');
$localFile =$file['file'];
$bucketName=C('BucketName');#名字
$accessKey = C('WsAccessKey');#ak
$secretKey = C('WsSecretKey');#sk
$WCS_GET_URL = C('WCS_GET_URL');#下载,你配置的域名
$WCS_PUT_URL = C('WCS_PUT_URL');#上传,在他们后台可以看到的
$WCS_MGR_URL = C('WCS_MGR_URL');#管理,在他们后台可以看到的
$str=json_encode($str);#转josn
// 获取上传凭证
$encodePutPolicy = $this->url_safe_base64_encode($str);#转码
$str = hash_hmac('sha1', $encodePutPolicy, $secretKey, false);
$encodeSign = $this->url_safe_base64_encode($str);
$token = $accessKey.':'.$encodeSign.':'.$encodePutPolicy;#拿到token
// 鉴权
$client = new Uploader($token);
$resp = $client->upload_return(str_replace("",'',$localFile));#上传
if ($resp) {
unlink($file['file']);
return 'http'.'://'.$WCS_GET_URL.'/'.$file['filename'];#地址,我是拼接
}
}
// 转编码,我木有用引用官方的,看不多直接拿出来了
public function url_safe_base64_encode($str)
{
$find = array('+', '/');
$replace = array('-', '_');
return str_replace($find, $replace, base64_encode($str));
}
!!!!sdk包里也有config也要配置
https://wcs.chinanetcenter.com/document/SDK 这是网宿官网的sdk包
总结:
1.使用thinkphp自带上传,拿到地址
2.然后配置上传凭证,$str里的记得转json格式。
3.然后鉴权
4.上传成功
嘻嘻 要是有帮助可以打赏一下小弟~~~~