2017-06-07 6 views
0

....は私がAWS S3バケット「upload.array( 『写真』、3)」次のコードで表すと何

私のhtmlコードに画像をアップロードするmulter-S3を使用して、完全にかすかなよ。 (簡略化のために減少したコード)

<form action="/upload" method="POST"> 
<input type="file" name="pic" id="pic" accept="image/*"> 
<input type="submit"> 
</form> 

私expressjsコード

AWS.config.update({ 
    accessKeyId: "xxxxxxxxxxxxx", 
    secretAccessKey: "yyyyyyyyyy", 
    "region": "zzzzzzzzz" , 
    signatureVersion: 'v4' 
}); 

var s3=new AWS.S3(); 

var upload = multer({ 
    storage: multerS3({ 
    s3: s3, 
    bucket: 'imgcontainer', 
    metadata: function (req, file, cb) { 
     cb(null, {fieldName: file.fieldname}); 
    }, 
    key: function (req, file, cb) { 
     cb(null, Date.now().toString()) 
    } 
    }) 
}) 

app.post('/upload', upload.array('photos', 3), function(req, res, next) { 
    res.send('Successfully uploaded ' + req.files.length + ' files!') 
}) 

出力:

Cannot read property 'length' of undefined 

答えて

1

は二つの問題があります。

  • ファイルのフィールド名は ' pic 'ではなく' photos '(これはフィールド名bei Express側で使用されています)。名前を変更する。

  • <form>タグに明示的に属性を設定する必要があります。それ以外の場合、ブラウザはファイル入力データを含まないapplication/x-www-form-urlencoded形式でフォームを送信します。

は、これらの変更を行い、multerドキュメントで概説されているようreq.filesを移入する必要があります。

+0

あなたのお返事ありがとうございます "upload.array(" pic "、3)" ...次に3はどういう意味ですか..... –

+0

[The documentation](https://github.com/expressjs/multer #arrayfieldname-maxcount)はそれを説明しています。それは 'maxCount'パラメータです(そのファイルフィールド名の最大ファイル制限を強制します)。 – mscdex

+0

同じエラー写真を写真に変更した後でも、 '定義されていない'長さ 'のプロパティを読み取れません.....ごめんなさい –