gpt4 book ai didi

javascript - 使用 AdonisJS 5 的文件存储 (S3)

转载 作者:行者123 更新时间:2023-12-05 01:34:59 26 4
gpt4 key购买 nike

在 AdonisJS v4 文档中我们有 this解释如何将文件流式传输到 S3 存储桶的部分。我在 AdonisJS v5 文档中寻找类似的东西,但它只有一个 example如何上传文件到本地服务器。

如果它还没有准备好,因为 Adonis 5 不是它的最新版本,这是通过 Adonis v5(特别是 typescript )将文件上传到 S3 的另一种方式?

最佳答案

我已经找到了使用 aws-sdk 执行此操作的方法,此代码并非 100% 我的:

uploadToS3Bucket 函数:

import * as AWS from "aws-sdk";
import { v4 as uuid } from "uuid";


const s3 = new AWS.S3({
region: process.env.AWS_REGION,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
});

export const uploadToS3Bucket = async (
file: any,
bucket: string
): Promise<{ key: string; url: string }> => {
try {
const { type, subtype, extname } = file;
let mimeType = type + "/" + subtype;

let fileType = "image/jpg";

const name = uuid() + "." + extname;

let buffer = Buffer.from(JSON.stringify(file), "utf-8");

await s3
.putObject({
Key: name,
Bucket: bucket,
ContentType: fileType,
Body: buffer.toString("base64"),
ACL: "public-read",
})
.promise();

let url = `https://${bucket}.s3.amazonaws.com/${name}`;
console.log(url);
return {
key: name,
url,
};
} catch (err) {
console.log(err);
return err;
}
};

在 Controller 中:

public async store({ request }: HttpContextContract) {
let file = getFileFromRequest(request, "defined_file_prop_name_here");

if (file) {
await uploadToS3Bucket(file, BUCKET_NAME);
}
}

关于javascript - 使用 AdonisJS 5 的文件存储 (S3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63345690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com