简单的 OSS 图片上传



通过Composer安装 aliyuncs
。
成功后在公共文件里引用 OSS\OssClient;
和 OSS\Core\OssException;
两个文件
然后编写初始化OSS的方法,前面三个参数就不用多说了,第四个参数官方说的是如果是自定义域名应该填写为true
,但实际上我填写后一直报错,填写为false
则正常。
// 应用公共文件
use OSS\OssClient;
use OSS\Core\OssException;
function saNewOss($ossConfig,$isCName)
{
try {
return new OssClient($ossConfig['KeyId'], $ossConfig['KeySecret'], $ossConfig['Endpoint'], $isCName);
} catch (OssException $e) {
print $e->getMessage();
}
}
传入一个Base64的图片,然后保存到本地,然后上传到OSS。
function base64ImgSaveOss($img, $types = null)
{
// 设置目录
$ymd = date("Ymd");
$fullPath = 'upload/ossBase64/' . $ymd . '/';
$fullPathOss = 'cards/' . $ymd . '/';
if (!file_exists($fullPath)) {
mkdir($fullPath, 0777, true);
}
// 设置文件类型
$types = empty($types) ? array('jpg', 'gif', 'png', 'jpeg') : $types;
// 转换被替换掉的字符
$img = str_replace(['_', '-'], ['/', '+'], $img);
$b64Img = substr($img, 0, 100);
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $b64Img, $matches)) {
$type = $matches[2];
if (!in_array($type, $types)) {
return ''; //不支持的图片格式
}
$img = str_replace($matches[1], '', $img);
$img = base64_decode($img);
$photo = md5(date('YmdHis') . rand(1000, 9999)) . '.' . $type;
file_put_contents($fullPath . $photo, $img);
$ossConfig = config('card.oss');
saNewOss($ossConfig, false)->uploadFile($ossConfig['Bucket'], $fullPathOss . $photo, $fullPath . $photo);
return Config("card.ossPath") . $fullPathOss . $photo;
}
return ''; //图片为空
}