在 Meteor 中使用 multer 将图像上传到 S3

问题描述

我目前正在尝试将图像上传到 S3 存储桶(数字海洋空间)。 我在digitalocean spaces page上找到了一些关于使用multer和multer s3的信息,但是他们使用express js使用post请求发送文件

我尝试使用meteor方法将图像发送到服务器并使用multer将其存储在s3中。

在客户端使用以下代码捕获图像并将其发送到服务器端:

'click #takePhoto': (event,template) => {
        canvas.width = video.videoWidth;
        canvas.height = video.videoHeight;
        canvas.getContext('2d').drawImage(video,0);
        const data = canvas.toDataURL('image/jpeg');
        document.getElementById('photo').setAttribute('src',data);
        // Meteor call to send the canvas to the server for storing on s3
        Meteor.call('uploadPicture',data,template.data);
}

在服务器端,我使用以下代码连接到 s3,并尝试将文件上传到 mul

const spacesEndpoint = new AWS.Endpoint('ams3.digitaloceanspaces.com');
const s3 = new AWS.S3({
    endpoint: spacesEndpoint,accessKeyId: Meteor.settings.private.digitalOceanSpaces.accessKeyId,secretAccessKey: Meteor.settings.private.digitalOceanSpaces.secretAccessKey
});

var upload = multer({
    storage: multerS3({
        s3: s3,bucket: 'test-bucket'
        Metadata: function (req,file,cb) {
            cb(null,{ fieldName: file.fieldname });
        },key: function (req,Date.Now().toString())
        }
    })
})

upload.single(picture);

最后上传图片来自发送到服务器的 canvas.toDataURL('image/jpeg') 函数

当我现在运行这个函数时,它不会给我一个错误,但它也没有出现在空格上,所以它没有正确发送。

我想知道是否有人能够使这个工作正常进行,或者他们是否使用不同的解决方案将图像上传到 s3 存储。我也无法弄清楚我可以在这里的某个地方捕获错误获取更多调试信息,因为它给我带来了问题。

先谢谢你!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...