nos-uploads
v2.0.2
Published
Upload module for IBI Data's Node Starter
Downloads
43
Readme
NOS-Uploads
An upload module for IBI Data's Node Starter
- The upload module uses Multer.
S3 Storage
Single File
const upload = require('nos-upload')(config).s3;
router.route('/uploads')
.post(upload.single('file'), (req, res, next) => {
console.log(req.file); // file information
console.log(req.file.path); // full s3 location of file
});
Multiple Files
const upload = require('nos-upload')(config).s3;
router.route('/uploads')
.post(upload.array('file'), (req, res, next) => {
console.log(req.files); // file information
});
Multiple Files with different file identifiers
const upload = require('nos-upload')(config).s3;
router.route('/uploads')
.post(upload.fields([
{
name: 'file1',
maxCount: 1,
},
{
name: 'file2',
maxCount: 5,
},
]), (req, res, next) => {
console.log(req.files.file1); // array of files
console.log(req.files.file1); // array of files
});
Disk Storage
Single File
const upload = require('nos-upload')(config).disk;
router.route('/uploads')
.post(upload.single('file'), (req, res, next) => {
console.log(req.file); // file information
console.log(req.file.path); // temp folder path to uploaded file
});
Multiple Files
const upload = require('nos-upload')(config).disk;
app.route('/uploads')
.post(upload.array('file'), (req, res, next) => {
console.log(req.files); // file information
});
Multiple Files with different file identifiers
const upload = require('nos-upload')(config).disk;
app.route('/uploads')
.post(upload.fields([
{
name: 'file1',
maxCount: 1,
},
{
name: 'file2',
maxCount: 5,
},
]), (req, res, next) => {
console.log(req.files.file1); // array of files
console.log(req.files.file1); // array of files
});
Memory Storage
Single File
const upload = require('nos-upload')(config).memory;
app.route('/uploads')
.post(upload.single('file'), (req, res, next) => {
console.log(req.file); // file information
console.log(req.file.buffer); // buffered file
});
Multiple Files
const upload = require('nos-upload')(config).memory;
app.route('/uploads')
.post(upload.array('file'), (req, res, next) => {
console.log(req.files); // file information
});
Multiple Files with different file identifiers
const upload = require('nos-upload')(config).memory;
app.route('/uploads')
.post(upload.fields([
{
name: 'file1',
maxCount: 1,
},
{
name: 'file2',
maxCount: 5,
},
]), (req, res, next) => {
console.log(req.files.file1); // array of files
console.log(req.files.file1); // array of files
});
Setting Options
File limit settings and the destination can be set in config.js.
In the upload.js file, you can set the following options:
- fileFilter: function which will control which files to accept. See the multer documentation for an example.
- filename: function which renames the uploaded files. See the multer documentation
Override options
If you need to override the options for a single upload, you can explicitly set them before your route.
const upload = require('nos-upload')(config).disk;
upload.limits.fileSize = 1000000; // in bytes
upload.limits.files = 1;
upload.fileFilter = (req, file, cb) => {
if (somecondition) {
cb(null, false); // reject
}
else {
cb(null, true); // accept
}
}
Just Using Multer
const multer = require('multer');
//CONFIGURE MULTER FILE UPLOAD LOCATION
let storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'tmp/') //Your upload destination here
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})
let upload = multer({ storage: storage});
// POST for one upload only
app.route('/api/files')
.post(upload.single('file'), function (req, res) {
console.log(req.file);
})
// POST for multiple uploads
app.route('/api/files')
.post(upload.array('file'), function (req, res) {
console.log(req.files);
});