【问题标题】:Upload and fetch images in PERN stack Amazon EC2在 PRN 堆栈 Amazon EC2 中上传和获取图像
【发布时间】:2020-11-29 15:00:47
【问题描述】:

所以,场景是:

我正在研究 PRN 堆栈。

我想从用户那里获取一个图像文件并将其上传到 EC2(AWS) 并存储其公共路径 (如:www.mydomain/uploads/images/pic1.png ) 在数据库中,以便我可以通过从数据库中获取该公共图像路径将其显示在前端。

我现在在做什么:

我正在从用户那里获取一张图片并将其存储在 一个 S3 存储桶中,并且我还获取了一个公共 URL(亚马逊 S3 存储桶 URL)以在前端显示该图片。

但是,问题是:

我的域名是 (sub.example.com);我想上传并获取这样的图片 URL (sub.example.com/uploads/images/image1.png)。

我不知道如何使用 S3 存储桶配置域以获取这样的图像 URL (sub.example.com/uploads/images/image1.png)。

你能指导我吗:

如何使用 S3 存储桶配置域以获取公共 URL(例如: sub.example.com/uploads/images/image1.png) 用于图像?

如何使用 Amazon EC2 实例上传和获取图像?

【问题讨论】:

    标签: amazon-web-services express amazon-s3 amazon-ec2


    【解决方案1】:

    如果您想在您的 express 服务器和 s3 url 中使用完全相同的域,我只提出了这个解决方案。因为除非您使用代理,否则您不能让一个 CNAME 指向不同的域(表达域 + s3 域)。

    使用 express 的一部分作为代理来获取 s3 图像数据,并将其返回给用户。
    这是一个示例代码。

    // setup path same as s3 object key path
    app.get('/uploads/images/:imageFile', async (req, res) => {
        const imageFile = req.params.imageFile
        const imageUrl = `https://{s3.domain}/upload/images/${imageFile}`
    
        // This simulate to fetch image from the s3
        const response = await axios.get(imageUrl, {
            responseType: "stream"
        })
    
        // you could set different content-type by content-type from response of s3 url.
        res.setHeader("content-type", "image/png")
        response.data.pipe(res)
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 2022-11-25
      • 2015-07-28
      • 2013-10-27
      • 1970-01-01
      相关资源
      最近更新 更多