阿里云OSS上传文件以及获取文件
1、新建bucket (文件存储空间名称),bucket下也可以继续创建目录
2、通过短信验证码创建accessKey,保存accessKeyID和accessKeySecret:
3、添加oss管理文件时需要的配置(选区endpoint的时候一定要选对应外网的)
4、部分管理文件的函数封装
/** * 上传文件 * @param $name * @param $path * @return bool */ public static function upload($name, $path) { // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。 $accessKeyId = \Yii::$app->params['ossConfig']['accessKeyId']; $accessKeySecret = \Yii::$app->params['ossConfig']['accessKeySecret']; // Endpoint以杭州为例,其它Region请按实际情况填写。 $endpoint = \Yii::$app->params['ossConfig']['endpoint']; // 存储空间名称 $bucket = \Yii::$app->params['ossConfig']['bucket']; // 文件名称 $object = $name; // <yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt $filePath = $path; try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->uploadFile($bucket, $object, $filePath); return true; } catch(OssException $e) { \Yii::error($e->getMessage(),__CLASS__ . __FUNCTION__); return false; } } /** * 获取文件的链接 * @param $bucket * @param $object * @return string */ public static function getSignUrl($bucket, $object) { $accessKeyId = \Yii::$app->params['ossConfig']['accessKeyId']; $accessKeySecret = \Yii::$app->params['ossConfig']['accessKeySecret']; // Endpoint以杭州为例,其它Region请按实际情况填写。 $endpoint = \Yii::$app->params['ossConfig']['endpoint']; try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $url = $ossClient->signUrl($bucket, $object,1000); return $url; } catch(OssException $e) { \Yii::error($e->getMessage(),__CLASS__ . __FUNCTION__); return ''; } }
5、实际调用的上传之后只需要把bucket和对应上传的文件的名称记录到本地的数据库中即可,表的结构可以设计为
CREATE TABLE `ubook_future_oss_file` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`mapId` INT(11) DEFAULT NULL COMMENT 'mapId',
`mapId` INT(11) DEFAULT NULL COMMENT 'mapType业务相关的类型',
`bucket` VARCHAR(500) NOT NULL COMMENT '文件上传的名字',
`fileName` VARCHAR(500) NOT NULL COMMENT '文件处理的名字',
`isValid` TINYINT(1) NOT NULL DEFAULT '1' COMMENT ' 1、有效 0、无效',
`cTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
`uTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '删除时间戳,非空代表已逻辑删除',
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='oss上传文件记录'