2017-06-07 265 views
0

什麼是「upload.array(‘照片’,3)」在下面的代碼表示....我在使用multer-S3上傳圖像到AWS S3存儲

我的HTML代碼完全昏。 (代碼減少簡潔)

<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

這裏有兩個問題:

  • 文件字段名稱是「圖片「而不是」照片「(這是字段名稱bei ng在Express方面使用)。改變一個名字或其他。

  • 需要在<form>標籤上明確設置enctype="multipart/form-data"屬性,否則瀏覽器將以application/x-www-form-urlencoded形式發送表單,該表單不包含文件輸入數據。

讓這些變化,併爲multer文檔中列出req.files應該填充。

+0

感謝您的回覆mscdex,「upload.array(」pic「,3)」...那麼3代表..... –

+0

[文檔](https://github.com/expressjs/multer #arrayfieldname-maxcount)解釋它,它是'maxCount'參數(強制文件字段名稱的最大文件限制)。 – mscdex

+0

相同的錯誤「即使在將照片更改爲圖片後,也無法讀取未定義的屬性'長度'......抱歉 –

相關問題