10

例えば:

knox.js:

knox.putFile("local.jpeg", "upload.jpeg", {
          "Content-Type": "image/jpeg"
        }, function(err, result) {
          if (err != null) {
            return console.log(err);
          } else {
            return console.log("Uploaded to amazon S3");

knox.js、local.jpeg、local2.jpeg と同じディレクトリに 2 つの画像があります。local.jpeg を s3 にアップロードできますが、local2.jpeg はアップロードできません。両方のファイルに同じ権限があります。ここで何か不足していますか?ありがとう

4

2 に答える 2

12

ロケールにストアを持たない私の実装。、、、expressで。knox_ mime_fs

var knox = require('knox').createClient({
    key: S3_KEY,
    secret: S3_SECRET,
    bucket: S3_BUCKET
});

exports.upload = function uploadToAmazon(req, res, next) {
    var file = req.files.file;
    var stream = fs.createReadStream(file.path)
    var mimetype = mime.lookup(file.path);
    var req;

    if (mimetype.localeCompare('image/jpeg')
        || mimetype.localeCompare('image/pjpeg')
        || mimetype.localeCompare('image/png')
        || mimetype.localeCompare('image/gif')) {

        req = knox.putStream(stream, file.name,
            {
                'Content-Type': mimetype,
                'Cache-Control': 'max-age=604800',
                'x-amz-acl': 'public-read',
                'Content-Length': file.size
            },
            function(err, result) {
                console.log(result);
            }
       );
       } else {
        next(new HttpError(HTTPStatus.BAD_REQUEST))
       }

       req.on('response', function(res){
           if (res.statusCode == HTTPStatus.OK) {
               res.json('url: ' + req.url)
           } else {
               next(new HttpError(res.statusCode))
           }
});
于 2013-10-31T12:48:53.827 に答える
0

これは、あなたのコードが local2.jpeg をアップロードしていないためです!

コードは、という名前のファイルのみをプッシュしますlocal.jpeg。すべてのファイルに対して、knox.put()メソッドを呼び出す必要があります。また、s3にアップロードされたファイルの名前を変更するために文字列の書式設定を行うヘルパー関数を用意することをお勧めします(または、そのままにしておきます:))

var files = ["local.jpeg", "local1.jpeg"];
for (file in files){
  var upload_name = "upload_"+ file; // or whatever you want it to be called

  knox.putFile(file, upload_name, {
         "Content-Type": "image/jpeg"
     }, function (err, result) {
         if (err != null) {
             return console.log(err);
         } else {
             return console.log("Uploaded to amazon S3");
         }
     });
}
于 2012-11-10T15:59:49.437 に答える