使用Next.js和AWS S3上传到数字海洋空间

发布于 2025-02-04 05:05:43 字数 1188 浏览 5 评论 0原文

我正在尝试使用Next.js和AWS S3制作文件上传器(到数字海洋空间)。

一切正常,但是如果我将我的Digital Ocean Spaces Env变量设置为下一个。JS配置文件失败。我不知道为什么。 这是我的代码:

import aws from 'aws-sdk';
import formidable from 'formidable-serverless';
import fs from 'fs';
import config from '../../config';

// export const config = {
//   api: {
//     bodyParser: false
//   }
// };

export default async (req, res) => {
  const s3 = new aws.S3({
    endpoint: new aws.Endpoint('sfo3.digitaloceanspaces.com'),
    accessKeyId: config.NEXT_PUBLIC_ACCESS_KEY_ID,
    secretAccessKey: config.NEXT_PUBLIC_SECRET_KEY,
    region: 'sfo3'
  });

  const form = new formidable.IncomingForm();
  form.parse(req, async (err, fields, files) => {
    if (err) return res.status(500);

    const file = fs.readFileSync(files.file.path);

    s3.upload({
      Bucket: config.NEXT_PUBLIC_BUCKET,
      ACL: 'public-read',
      Key: 'inserir-url',
      Body: file,
      ContentType: 'image/jpeg'
    })
      .send((err, data) => {
        if (err) {
          console.log('err', err);
          return res.status(500);
        }
        return res.json({
          url: data.Location
        });
      });
  });
};

I'm trying to make a files uploader (to Digital Ocean Spaces) using Next.js and AWS S3.

Everything works fine, but if I set my Digital Ocean Spaces env variables in the Next.js config file it fails. I have no idea why.
Here's my code:

import aws from 'aws-sdk';
import formidable from 'formidable-serverless';
import fs from 'fs';
import config from '../../config';

// export const config = {
//   api: {
//     bodyParser: false
//   }
// };

export default async (req, res) => {
  const s3 = new aws.S3({
    endpoint: new aws.Endpoint('sfo3.digitaloceanspaces.com'),
    accessKeyId: config.NEXT_PUBLIC_ACCESS_KEY_ID,
    secretAccessKey: config.NEXT_PUBLIC_SECRET_KEY,
    region: 'sfo3'
  });

  const form = new formidable.IncomingForm();
  form.parse(req, async (err, fields, files) => {
    if (err) return res.status(500);

    const file = fs.readFileSync(files.file.path);

    s3.upload({
      Bucket: config.NEXT_PUBLIC_BUCKET,
      ACL: 'public-read',
      Key: 'inserir-url',
      Body: file,
      ContentType: 'image/jpeg'
    })
      .send((err, data) => {
        if (err) {
          console.log('err', err);
          return res.status(500);
        }
        return res.json({
          url: data.Location
        });
      });
  });
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

新雨望断虹 2025-02-11 05:05:43

创建一个.env文件,并在此处定义您的环境变量。

完成后,只需替换config.next_public _*process.env.next_public _*

Create a .env file and define your environment variables there.

Once done, simply replace config.NEXT_PUBLIC_* with process.env.NEXT_PUBLIC_*

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文