从 s3 损坏的图像

Image corrupted from s3

这是我的上传代码(节点)

// generate a uuid string
            const uuid = uuidv4(); // type string

            // upload to wasabi

            fs.readFile(file.tempFilePath, "utf8", (err, data) => {
                if (err) {
                    throw (err);
                }
                // upload the object
                s3.upload(
                    {
                        Body: data,
                        Key: uuid + "-" + file.name,
                        Bucket: "files",
                        Metadata: { 'ext': ".png" },
                        // ContentLength: file.size
                    }, (err, data) => {
                        if (err) {
                            console.log(err);
                            throw (err);
                        }
                        console.log(data); 
                });
            });

该对象确实到达了存储桶。它有超过 0 个字节。它大约是源图像的一半,但我只是假设有人正在压缩它(芥末之类的)。 我正在使用 express-fileupload 我的配置是:


app.use(fileUpload({

    createParentPath: true,

    limits: {
        fileSize: 2 * 1024 * 1024 * 1024 //2MB max file(s) size
    },

    useTempFiles: true,

    tempFileDir: "/tmp/",

}));

最终我直接从 wasabi 网络客户端下载了这个,并尝试在图像查看器中打开它,他们都说文件中有错误或者他们不支持文件类型(即 . png,所以它是受支持的)。 图片只有 ~150kb 。 基本上文件到达那里但它已损坏。

utf8 文本编码。但是 .png 不是文本。只需删除编码选项,它应该可以工作。