当前位置: 首页 > 面试题库 >

通过Node.js将base64编码的图像上传到Amazon S3

诸龙野
2023-03-14
问题内容

昨天我做了一个深夜的编码会议,并创建了一个小的node.js /
JS(实际上是CoffeeScript,但是CoffeeScript只是JavaScript,所以可以说是JS)应用程序。

目标是什么:

  1. 客户端(通过socket.io)将canvas datauri(png)发送到服务器
  2. 服务器将图像上传到亚马逊s3

步骤1完成。

服务器现在有一个字符串

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACt...

我的问题是: 将数据“流” /上传到Amazon S3并在那里创建实际映像的下一步什么?

knox
https://github.com/LearnBoost/knox似乎是一个很棒的库,可以将内容放入S3中​​,
但是我缺少的是base64编码图像字符串和实际上传操作之间的粘合

欢迎任何想法,指针和反馈。


问题答案:

对于仍在努力解决此问题的人们。这是我与本机aws-sdk一起使用的方法。

var AWS = require('aws-sdk');
AWS.config.loadFromPath('./s3_config.json');
var s3Bucket = new AWS.S3( { params: {Bucket: 'myBucket'} } );

在您的路由器方法中:-ContentType应该设置为图像文件的内容类型

  buf = Buffer.from(req.body.imageBinary.replace(/^data:image\/\w+;base64,/, ""),'base64')
  var data = {
    Key: req.body.userId, 
    Body: buf,
    ContentEncoding: 'base64',
    ContentType: 'image/jpeg'
  };
  s3Bucket.putObject(data, function(err, data){
      if (err) { 
        console.log(err);
        console.log('Error uploading data: ', data); 
      } else {
        console.log('succesfully uploaded the image!');
      }
  });

s3_config.json文件是:-

{
  "accessKeyId":"xxxxxxxxxxxxxxxx",
  "secretAccessKey":"xxxxxxxxxxxxxx",
  "region":"us-east-1"
}


 类似资料:
  • 问题内容: 我正在为Firefox / IE构建一个开放式搜索附加组件,并且该图像需要经过Base64编码,因此如何对我拥有的收藏夹图标进行64位编码? 我只熟悉PHP 问题答案: 据我记得,图像数据有一个xml元素。您可以使用此网站对文件进行编码(使用上载字段)。然后,只需将数据复制并粘贴到XML元素即可。 您也可以这样使用PHP来做到这一点: 使用Mozilla指南获取有关创建OpenSear

  • 我想采取一个当前的base64编码的图像,并使用一个简短的哈希说“84dskh”,以“加密”的图像到另一个完全有效的base64编码图像。 原始图像不必经过base64编码,最终我想要原始图像的加密图像,但它仍然是一个可以在img标记中显示的有效图像:。 最好使用JavaScript。

  • 目前,我正在使用@google-cloud/Storage NPM包将文件直接上传到Google云存储桶中。这需要一些技巧,因为我只有图像的base64编码字符串。我必须: 解码字符串 另存为文件 将文件路径发送到下面的脚本以上传到Google云存储 删除本地文件 我希望避免将文件存储在文件系统中,因为我使用的是Google App Engine,而且如果删除操作因任何原因无法工作,我不希望文件系

  • 问题内容: 我有一些JavaScript代码可将图像上传到服务器。下面是可以正常工作的ajax调用。 我现在需要将图像上传为base64编码,例如 但这是行不通的,即服务器无法识别我发送和抱怨的数据。 有谁知道在AJAX调用中发送base64编码数据的正确格式是什么? 问题答案: 感谢所有帮助我前进的答案。 我也已在 https://social.msdn.microsoft.com/Forums

  • 问题内容: 我的Express应用程序正在从浏览器中接收base64编码的PNG(使用toDataURL()从画布生成)并将其写入文件。但是该文件不是有效的图像文件,因此“文件”实用程序只是将其标识为“数据”。 问题答案: 我认为您正在转换的数据比您需要的更多。一旦使用正确的编码创建了缓冲区,您只需要将缓冲区写入文件即可。 new Buffer(…,’base64’)通过将输入解释为base64编