相关疑难解决方法(0)

使用aws-sdk将gm调整大小的图像上传到s3

所以我想要做的是从网址流式传输图像,使用graphicsmagick处理它并将其上传到s3.我只是不让它工作.

将处理后的图像流式传输到本地磁盘(使用fs.createWriteStream)可以正常工作.

当我缓冲我的流时,s3中的最终图像至少具有预期的大小(kb-wise),但我无法打开该图像.

这就是我目前的进步:

var request = require('request');

var gm = require("gm");

var AWS = require('aws-sdk');

var mime = require('mime');

var s3 = new AWS.S3();

gm(request('http://www.some-domain.com/some-image.jpg'), "my-image.jpg")
  .resize("100^", "100^")
  .stream(function(err, stdout, stderr) {
    var str = '';
    stdout.on('data', function(data) {
       str += data;
    });
    stdout.on('end', function(data) {
      var data = {
        Bucket: "my-bucket",
        Key: "my-image.jpg",
        Body: new Buffer(str, 'binary'), // thats where im probably wrong
        ContentType: mime.lookup("my-image.jpg")
      };
      s3.client.putObject(data, function(err, res) {
        console.log("done");
      });
    });
  });
Run Code Online (Sandbox Code Playgroud)

我确实尝试了一些像创建filewritestream和filereadstream的东西,但我认为应该有一些更清洁的解决方案来解决这个问题......

编辑:我尝试的第一件事是将Body设置为stdout(来自@AndyD的建议答案):

var data …
Run Code Online (Sandbox Code Playgroud)

streaming file-upload amazon-s3 node.js

15
推荐指数
1
解决办法
1万
查看次数

使用字节的AWS Rekognition JavaScript SDK

AWS Rekognition的Javascript API规定,对于 rekognition.compareFaces(params,...)法,SourceImageTargetImage可以采取BytesS3Object.我想用Bytes哪个可以

"字节 - (缓冲区,类型数组,Blob,字符串)"

图像字节的Blob最多5 MB.

当我传递Base64图像的编码字符串时,JS SDK再次重新编码(即双重编码).因此服务器响应错误说

{"__ type":"InvalidImageFormatException","消息":"无效的图像编码"}

有没有人设法使用base64编码图像(而不是)使用compareFaces JS SDK APIS3Object?或使用Bytesparam的任何JavaScript示例都会有所帮助.

javascript sdk base64 amazon-web-services amazon-rekognition

5
推荐指数
1
解决办法
2885
查看次数

使用节点将 zip 存档文件上传到 S3

我从 api 下载了一个 ziparchive,其中包含 gzipped 文件,我需要获取 gz 文件并保存到 s3。不想解压缩或任何东西。只需移动到S3。

当我打开存档时,它有一个带有随机数的文件夹 /12345/file1.gz 和许多文件 /12345/file2.gz 等。

我尝试过 yauzl 和 adm-zip,但不明白如何获取存档中的每个条目并发送到 s3。我有 s3-stream-upload 包,我可以用它来发送。就是做对了。谢谢你的帮助

yauzl.open("output.zip", {lazyEntries: true}, function(err, zipfile) {
  if (err) console.error('zip err: ', err);
  console.log(zipfile);
  //upload.write(zipfile);
  zipfile.readEntry();
  zipfile.on("entry", function(entry) {

      // file entry
      zipfile.openReadStream(entry, function(err, readStream) {
        if (err) console.error('readstream err: ', err);
        readStream.on("end", function() {
          zipfile.readEntry();
        });
        console.log(entry);
        readStream.pipe(upload) //upload is an s3-upload-stream
        .on('finish', function() { console.log('finished'); })
        .on('error', function(err) { console.error('stream err: ',err); });
      });

  });
});
Run Code Online (Sandbox Code Playgroud)

这让我在结束后写入错误,我认为 bcz …

amazon-s3 node.js ziparchive

5
推荐指数
1
解决办法
4842
查看次数