UNPKG

uploadio

Version:

Simple middleware for uploading files.

144 lines (124 loc) 4.12 kB
# UploadIO Simple middleware for uploading files. # Install ``` # With NPM npm install uploadio # With Yarn yarn add uploadio ``` # Usage When you upload a file, the file will be accessible from req.files. Example: You're uploading a file called xxx.jpg Your input's name field is profileImage: <input name="profileImage" type="file" /> In your server request, you can access your uploaded file from req.files.profileImage: ``` router.post('/', function(req, res) { res.send({files: req.files.profileImage}); }); ``` # Using middleware ``` app.use(fileUpload({ debug: true, thumbnails: [{ width: 250, height: 250, fit: [cover, contain, fill, inside or outside] // option, default cover }, { width: 50, height: 50, }], persistFileName: true, uploadDir: 'uploads/profiles', //Don't add forward slash at the end of path saveToS3: { secretAccessKey: 'YOUR-AWS-SECRET-KEY', accessKeyId: ''YOUR-AWS-ACCESS-KEY', bucket: 'BUCKET-NAME' } })); // How to get the the uploaded files for further use? // req.cloudFiles ✓ app.post('/upload', function(req, res, next) { console.info(req.cloudFiles); }) ``` # Sample output ## Uploaded to local disk ``` { "files": [ { "location": "uploads/profiles/download.jpeg", "key": "download.jpeg", "thumbnailImageUrls": [ { "250x250": "uploads/profiles/download_250x250.jpeg" }, { "50x50": "uploads/profiles/download_50x50.jpeg" } ] }, { "location": "uploads/profiles/men.png", "key": "men.png", "thumbnailImageUrls": [ { "250x250": "uploads/profiles/men_250x250.png" }, { "50x50": "uploads/profiles/men_50x50.png" } ] } ] } ``` ## When uploaded to s3 ``` { "files": [ { "location": "https://xxx.s3.amazonaws.com/uploads/profiles/download.jpeg", "key": "uploads/profiles/download.jpeg", "thumbnailImageUrls": [ { "250x250": "https://xxx.s3.amazonaws.com/uploads/profiles/download_250x250.jpeg" }, { "50x50": "https://xxx.s3.amazonaws.com/uploads/profiles/download_50x50.jpeg" } ] }, { "location": "https://xxx.s3.amazonaws.com/uploads/profiles/men.png", "key": "uploads/profiles/men.png", "thumbnailImageUrls": [ { "250x250": "https://xxx.s3.amazonaws.com/uploads/profiles/men_250x250.png" }, { "50x50": "https://xxx.s3.amazonaws.com/uploads/profiles/men_50x50.png" } ] } ] } ``` # APIs | Name | Default | Usage | | ------ | ------ |------| | debug | false or true | debug option to true to see some logging about upload process | | thumbnails | empty or [] | Should be an array of desired height and width | | persistFileName | false or true | Random file name ex: 123456789.jpeg, if true actual file name separated by underscore for spaces | | uploadDir | optional | If provided created directories otherwise uploaded at the root in a director `uploads` | | saveToS3 | optional | If passed the resources will be uploaded to s3. You need to provide secretAccessKey, accessKeyId and bucket name| | keepExtension | optional | If passed then file extension will be passed value | | thumbnails: [{width, height, fit}] | how the image should be resized to fit both provided dimensions, one of cover, contain, fill, inside or outside. (optional, default 'cover') | | | thumbnail option | | REF. https://sharp.pixelplumbing.com/api-resize | # Thanks & Credit [Busboy Package](https://github.com/mscdex/busboy) [AWS SDK Package](httpshttps://github.com/aws/aws-sdk-js) [Image thumbnail](https://github.com/onildoaguiar/image-thumbnail)