2017-05-17 11 views
0

このガイドSimple file upload to S3 using aws-sdk and Node/Expressに従って、ユーザーがS3経由で画像をアップロードできるようにしました。何らかの理由で私はそれを働かせることができません。エラーを修正するためにコードを修正するにはどうすればよいですか?aws-sdkとNode/Expressを使用してS3にアップロード

エラーは次のとおりです。TypeError:未定義のプロパティ '0'を読み取ることができません。

var aws    = require('aws-sdk'); 
    var multerS3  = require('multer-s3'); 
    var multer   = require("multer"); 

    (Not real codes) 
    aws.config.update({ 
     secretAccessKey: 'QWUdawup', 
     accessKeyId: 'GHQWD1A', 
     region: 'us-east-2' 
    }); 

     var s3 = new aws.S3(); 

    var upload = multer({ 
     storage: multerS3({ 
      s3: s3, 
      bucket: 'medstayfiles', 
      key: function (req, file, cb) { 
       console.log(file); 
       cb(null, file.originalname); //use Date.now() for unique file keys 
      } 
     }) 
    }); 



router.post("/", middleware.isLoggedIn, upload.array('image', 1), function(req, res,next){ 

     var filepath = undefined; 
     if(req.files[0]) { 
      filepath = req.files[0].key; // 'uploads/xxxxx.extension' 
     } 

     var newRentals = {filepath: filepath} 

     Rentals.create(newRentals, function(err, newlyCreated){ 
      if(err){ 
       console.log(err); 
      } else { 
       //redirect back to rentals page 
       res.redirect("/rentals"); 
      } 
     }); 
    }); 
+0

ルータの設定を表示できますか? middleware.isLoggedinとは何ですか? – notionquest

答えて

0

エラーが表示されてたところあなたは言及しなかったが、あなたのコードに基づいて、req.filesが定義されていないようです。おそらく、ファイルのアップロードを処理するための適切なミドルウェアを追加する必要があります。

本当にあなたがウェブユーザーからの投稿を受け入れる場合は、事前に署名されたURLまたはアップロードフォームを使用して直接S3にアップロードする必要があります。手間と帯域を節約しましょう。

関連する問題