使用fetch保留图像元数据

时间:2018-06-03 01:01:23

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

我使用 fetch 从远程服务器下载图像,然后上传到AWS S3商店。下载,设置内容类型和上传工作正常但在此过程中我从图像中丢失图像元数据(例如版权,拍摄日期,相机等)。我已经进行了广泛的研究,但是无法看到如何使用fetch来获取它,或者看看它是在这里丢失还是在aws PutObject调用中丢失。如果需要,我可以使用比获取更多的东西来解决问题。

        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()

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

上面的代码运行正常 - 实际上在下一个模块中我们遇到了问题。