Node.js S3 上传器问题

Posted

技术标签:

【中文标题】Node.js S3 上传器问题【英文标题】:Node.js S3-uploader issue 【发布时间】:2017-02-17 01:46:29 【问题描述】:

尝试从 node.js 上传到 Amazon S3 时遇到此错误我花了一整天的时间才发现错误没有运气,安装了图像魔术,应用程序在弹性 beanstalk 上运行,以前安装在开发服务器上,并且代码在我运行时运行良好将应用程序移动到导致此错误的aws 我检查了与开发服务器相同的所有依赖项。

Node.js 日志

    Upload data:tmp/c0005d84e41ec82b4f5ae2b1cbf1c3b8
 [Error: Command failed: /bin/sh -c identify -format "name=
size=%[size]
format=%m
colorspace=%[colorspace]
height=%[height]
width=%[width]
orientation=%[orientation]
" tmp/c0005d84e41ec82b4f5ae2b1cbf1c3b8
/bin/sh: identify: command not found
]
  killed: false,
  code: 127,
  signal: null,
  cmd: '/bin/sh -c identify -format "name=\nsize=%[size]\nformat=%m\ncolorspace=%[colorspace]\nheight=%[height]\nwidth=%[width]\norientation=%[orientation]\n" tmp/c0005d84e41ec82b4f5ae2b1cbf1c3b8' 

S3 上传选项

var client = new upload('XXX', 

    aws: 
     path: 'images/',
     region: 'us-east-1',
     acl: 'public-read',
     accessKeyId: 'XXX',
     secretAccessKey: 'XXXX'
   ,

   cleanup: 
     versions: true,
     original: false
   ,

   original: 
     awsImageAcl: 'private'
   ,

   versions: [
     maxWidth: 1040,
     format: 'jpg',
     suffix: '-large',
     quality: 80
   ,
     maxWidth: 780,
     suffix: '-medium',
     format: 'jpg',
     quality: 80
   ]
 );

上传脚本

app.post('/profile/upload', mupload.single('avatar'), function (req, res, next) 


    var data = req.file;
    console.log("Upload data:" + data.path);

    client.upload(data.path, , function(err, versions, meta) 
          console.log(err);
          console.log(meta);
          console.log("versions data:" + versions);
          versions.forEach(function(image) 
                    res.end(image.url);
          );


    );

);

【问题讨论】:

【参考方案1】:

这是你的问题:/bin/sh: identify: command not found

程序识别未安装,需要在EB实例上安装imagemagick。在你的 .ebextensions/packages.config 添加

packages:
  yum:
    ImageMagick: []

【讨论】:

以上是关于Node.js S3 上传器问题的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 node.js 从 url 上传到 S3?

从 url 下载文件并将其上传到 AWS S3 而不保存 - node.js

如何使用 node.js、Express 和 knox 将文件从浏览器上传到 Amazon S3? [关闭]

Node js - 在上传时配置 aws s3 图像

使用适用于 Node.js 的 AWS 开发工具包将二进制文件上传到 S3

使用带有 Node.js 的 AWS Lambda 函数从 S3 存储桶中提取 zip 文件并上传到另一个存储桶