【问题标题】:Retain image metadata using fetch使用 fetch 保留图像元数据
【发布时间】:2018-11-12 17:15:08
【问题描述】:

我正在使用 fetch 从远程服务器下载图像,然后上传到 AWS S3 存储。下载、设置内容类型和上传工作正常,但在此过程中我丢失了图像中的图像元数据(例如版权、拍摄日期、相机等)。我进行了广泛的研究,但看不到如何使用 fetch 来获取它,或者看它是否在此处丢失或在 aws PutObject 调用中丢失。如果需要,我愿意使用 fetch 以外的东西来解决问题。

        const fetch = require('node-fetch');

        let ext = imageURL.split("?")[0].split(".").pop();
        //  console.log(ext);
        let contType = "";
        switch (ext.toLowerCase()) {
            case "jpg":
                contType = "image/jpeg";
                break;
            case "jpeg":
                contType = "image/jpeg";
                break;
            case "png":
                contType = "image/png";
                break;
            case "gif":
                contType = "image/gif";
                break;
            case "svg":
                contType = "image/svg+xml";
                break
            default:
                contType = "application/octet-stream";

        }
        console.log(`Using content type ${contType} for ${ext}`);
        let response = await fetch(imageURL);
        if (response.ok) {

            let buffer = await response.buffer()

            await s3.putObject({
                Bucket: config.bucket,
                Key: "images/" + filename + "." + ext,
                Body: buffer,
                ContentType: contType,
                //MetadataDirective: "COPY"
            }).promise()

非常感谢任何帮助!

【问题讨论】:

  • 你是如何确认图像甚至有元数据开始的?这里应该没有任何东西可以开始修改图像元数据。 (MetadataDirective 是关于 object 元数据的,完全不相关)。
  • 谢谢迈克尔 - 通过重新寻找回答您的评论,我可以看到它实际上是在我们丢失元数据的代码之后的另一个模块中 - 而不是上面的代码。我会关闭这个,道歉。

标签: javascript node.js amazon-s3 fetch node-fetch


【解决方案1】:

上面的代码运行良好——实际上是在下一个模块中我们遇到了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2016-03-24
    • 1970-01-01
    • 2011-04-01
    • 2021-08-26
    • 1970-01-01
    • 2012-01-11
    相关资源
    最近更新 更多