angular中使用AWS S3将文件上传到minio遇到的坑

本文介绍如何使用AWS SDK在JavaScript中配置S3服务,包括设置凭证、自定义endpoint,详细讲解了文件上传、下载及删除的API用法,特别针对路径构建和常见问题进行了解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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只写要删除的文件名的话就删除不成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bonny雨曦

码字不易,多多鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值