1 | # Multer S3
|
2 |
|
3 | Streaming multer storage engine for AWS S3.
|
4 |
|
5 | This project is mostly an integration piece for existing code samples from Multer's [storage engine documentation](https://github.com/expressjs/multer/blob/master/StorageEngine.md) with [s3fs](https://github.com/RiptideElements/s3fs) as the substitution piece for file system. Existing solutions I found required buffering the multipart uploads into the actual filesystem which is difficult to scale.
|
6 |
|
7 | ## Installation
|
8 |
|
9 | ```sh
|
10 | npm install --save multer-s3
|
11 | ```
|
12 |
|
13 | ## Usage
|
14 |
|
15 | ```javascript
|
16 | var aws = require('aws-sdk')
|
17 | var express = require('express')
|
18 | var multer = require('multer')
|
19 | var multerS3 = require('multer-s3')
|
20 |
|
21 | var app = express()
|
22 | var s3 = new aws.S3({ /* ... */ })
|
23 |
|
24 | var upload = multer({
|
25 | storage: multerS3({
|
26 | s3: s3,
|
27 | bucket: 'some-bucket',
|
28 | key: function (req, file, cb) {
|
29 | cb(null, Date.now().toString())
|
30 | }
|
31 | })
|
32 | })
|
33 |
|
34 | app.post('/upload', upload.array('photos', 3), function(req, res, next) {
|
35 | res.send('Successfully uploaded ' + req.files.length + ' files!')
|
36 | })
|
37 | ```
|
38 |
|
39 | ## Testing
|
40 |
|
41 | The tests mock all access to S3 and can be run completely offline.
|
42 |
|
43 | ```sh
|
44 | npm test
|
45 | ```
|