前言
阿里云OSS在香港或其他海外地域的存储桶每个月有5G免费存储额度。
一般小型项目也够用了。在这篇文章中主要是将nestjs适配上传到阿里云OSS。
建立阿里云存储桶
地域选择中国香港
接下来在传输管理中绑定自有域名,这样就可以通过自有域名进行访问。(如果本身域名解析绑定在阿里云的,在这边阿里云也可以选择自动添加cname。这样就不用自己去解析后台添加了。)
如果不是解析在阿里云的,去自己的解析商添加cname解析。
如果需要HTTPS的,可以直接在域名管理页面去申请证书。过程不麻烦。
到这边,存储桶就建立完了。
nestjs 中代码
首先需要安装阿里云oss的依赖
yarn add ali-oss
yarn add @types/ali-oss
新建 alioss.ts 的文件
import * as OSS from 'ali-oss';
import { AppConfig } from 'config';
const client = new OSS({
region: AppConfig.aliOss.region,
accessKeyId: AppConfig.aliOss.accessKeyId,
accessKeySecret: AppConfig.aliOss.accessKeySecret,
bucket: AppConfig.aliOss.bucket,
endpoint: AppConfig.aliOss.endpoint,
cname: AppConfig.aliOss.cname,
});
export async function put(file: any, fileName: string) {
try {
// 填写OSS文件完整路径和本地文件的完整路径。OSS文件完整路径中不能包含Bucket名称。
// 如果本地文件的完整路径中未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
await client.put('上传OSS的文件路径' + `${fileName}`, file);
} catch (e) {
console.log(e);
}
}
//获取OSS的签名后的图片地址,因为设置的不是公开访问,毕竟免费额度少,万一被DDOS就不好了。签名一次有效期20分钟,所以这是获得签名后的图片地址,传给前端。
export function getOssSignatureUrl(fileName: string) {
try {
const result = client.signatureUrl('你的OSS文件路径地址。' + `${fileName}`);
return result;
} catch (e) {
console.log(e);
}
}
// 调用listDir函数,通过设置不同的文件前缀列举不同的目标文件。
// 上限1000个文件,如果超过1000个文件,返回会带nextMarker,在下次访问中,maker中填上nextMarker,就可以获取下一页。
export async function listDir(dir: string, nextMarker?: string) {
const result = await client.list(
{
prefix: dir,
// 设置正斜线(/)为文件夹的分隔符。
delimiter: '/',
'max-keys': 1000,
marker: nextMarker,
},
{},
);
return result;
}
export async function deleteFile(fileName: string) {
try {
// 填写Object完整路径。Object完整路径中不能包含Bucket名称。
await client.delete(fileName);
//console.log(result);
} catch (e) {
console.log(e);
}
}
详解config内OSS配置文件
aliOss: {
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'oss-cn-hongkong',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: '你的RAM用户的访问accessKeyId',
accessKeySecret: '你的RAM用户的访问accessKeySecret',
// 填写Bucket名称。关于Bucket名称命名规范的更多信息,请参见Bucket。
bucket: 'test-andiliba',
//是否使用自己的域名,提前在阿里OSS内创建好Bucket,并将其指定为自己的域名
//刚刚绑定的域名
endpoint: 'testandiliba.andiliba.cn',
cname: true,
}
8 条评论
想想你的文章写的特别好www.jiwenlaw.com
想想你的文章写的特别好https://www.237fa.com/
想想你的文章写的特别好https://www.237fa.com/
怎么收藏这篇文章?
看的我热血沸腾啊https://www.jiwenlaw.com/
叼茂SEO.bfbikes.com
vzgqrf07184WP-感谢作者的精彩分享,让我对XX技术有了更深入的掌握。www.well-techmachine.cn/chenggonganli/76.html/
表评论5385