小编tan*_*ols的帖子

使用node.js保存存储在s3上的图像?

我正在尝试编写一个使用node.js在s3上存储图像的图像服务器.上传图像工作正常,我可以使用s3浏览器客户端正确下载和查看它(我特别使用dragondisk,但我已经成功下载了其他的),但是当我用节点下载它并尝试把它写入磁盘,我无法打开文件(它说它可能已损坏或使用预览无法识别的文件格式).我正在使用amazon sdk进行节点和fs来编写文件.我知道你可以将一个可选的编码传递给fs.writeFile,但我已经尝试了所有这些并且它不起作用.我还尝试在getObject上设置putObject和ResponseContentType上的ContentType,以及在各种组合中设置ContentEncoding和ResponseContentEncoding(以及所有这些内容).结果相同.这是一些代码:

var AWS = require('aws-sdk')
  , gm = require('../lib/gm')
  , uuid = require('node-uui')
  , fs = require('fs');

AWS.config.loadFromPath('./amazonConfig.json');
var s3 = new AWS.S3();

var bucket = 'myBucketName'; // There's other logic here to set the bucket name.

exports.upload = function(req, res) {
    var id = uuid.v4();
    gm.format("/path/to/some/image.jpg", function(format){
        var key = req.params.dir + "/" + id + "/default." + format;
        fs.readFile('/path/to/some/image.jpg', function(err, data){
            if (err) { console.warn(err); }
            else {
                s3.client.putObject({
                    Bucket: bucket,
                    Key: key,
                    Body: data,
                    ContentType: 'image/jpeg' …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 fs node.js

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

标签 统计

amazon-s3 ×1

fs ×1

node.js ×1