1.配置
import * as AWS from 'aws-sdk'
s3 = new AWS.S3({
accessKeyId: 'XXXX',
secretAccessKey: 'XXXX',
endpoint: environment.server,
s3ForcePathStyle: true, // needed with minio?
signatureVersion: 'v4',
})
要先下载 aws-sdk,具体可以看https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/cloud9-javascript.html
2.上传
uploadFile(file) {
const now = new Date()
const nowName = moment(now).format('YYMMDDHHmmSSS')
const aliName = `files/apps/${this.editApp.companyId}`
const params = { Bucket: aliName, Key: `${nowName}.apk`, Body: file.value };
this.s3.putObject(params, (err, data) => {
if (err)
console.log(err)
else {}
});
}
参数解析:
①aliName:文件要上传的具体路径。其中``会自动识别出当前服务器的网址,files是我当前服务器下的minio的一个文件夹(已存在的),apps是我要把文件上传到里面的文件夹(开始时是不存在的),${this.editApp.companyId}是我当前登陆的账号的公司id。不存在的文件夹,会自动生成。
②params:要上传的文件的具体信息。其中Bucket:上传的路径;Key:上传到文件上传到minio后的文件名;Body:上传的文件的内容
3.删除minio上的文件
deleteAli(app) {
const aliName = `files/apps`
const params = { Bucket: aliName, Key: `${this.editApp.companyId}/${app.identity}.apk` };
this.s3.deleteObject(params, (err, data) => {
if (err) {
console.log(err);
} else {
console.log("删除成功", data);
}
})
}
1)参数解析:
我文件所在路径为files/apps/000/xxxx.apk
①${this.editApp.companyId}:就是文件所在路径的000,因为我要根据我所登陆的账号所在的公司id生成相应的文件夹
②${app.identity}.apk:是我要删除的文件的名字
2)疑点:我在https://blog.youkuaiyun.com/m0_37263637/article/details/80697920这篇文章和官网https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#deleteObject-property看到的Bucket是文件所在的文件夹,Key是要删除的文件的名字,但是我如果Bucket只写000,Key只写要删除的文件名的话就删除不成功。