0

私のウェブサイトからS3に画像(PNG)をアップロードしようとしています。ウェブサイトからS3にファイルをアップロード

ラムダにmultipart/form-dataリクエストを送信してから、Busboyを使用して解析しています。

それはS3の罰金にアップロードして、それを引き起こす可能性がありますそれは何の画像/ PNGですが、私は、ファイルをダウンロードし、それを表示しようとした場合、ファイルは

無効であることを示していますか?ここでどこが間違っているのか分かりません。

コード:事前に

var AWS = require('aws-sdk'); 
var BluebirdPromise = require("bluebird"); 
var Busboy = require('busboy'); 
var s3 = BluebirdPromise.promisifyAll(new AWS.S3()); 
var str = require('string-to-stream'); 

const SavePFP = async((user_id, req) => { 
    var busboy = new Busboy({headers: req.headers}); 

    let res = await(new Promise((resolve) => { 
     busboy.on('file', function (fieldname, file, filename, encoding, mimetype) { 
      console.log('File [' + fieldname + ']: filename: ' + filename); 

      file.on('data', function (data) { 
       console.log('File [' + fieldname + '] got ' + data.length + ' bytes'); 

       resolve({ 
        filename, 
        encoding, 
        mimetype, 
        data 
       }); 
      }); 

      file.on('end', function() { 
       console.log('File [' + fieldname + '] Finished'); 
      }); 
     }); 

     str(req.rawBody).pipe(busboy); 
    })); 

    let {data, encoding, mimetype} = res; 

    var params = { 
     Bucket: '...', 
     Key: user_id, 
     Body: data, 
     ACL: 'public-read', 
     ContentEncoding: encoding, 
     ContentType: mimetype 
    }; 

    console.log("Uploading to AWS S3..."); 
    let response = await(s3.upload(params).promise()); 
    console.log("[SavePFP]: " + JSON.stringify(response, null, 2)); 

    if (response && response.Location) { 
     return response.Location; 
    } 
}); 

module.exports = { 
    SavePFP 
}; 

ありがとう!

答えて

0

ファイルをbase64に変換してそこからアップロードするだけで、これを完全に回避するのは避けました。

ありがとうございました

関連する問題