Repository: bradtraversy/nodeuploads Branch: master Commit: 6733fc81f487 Files: 5 Total size: 3.5 KB Directory structure: gitextract_n1g40klz/ ├── .gitignore ├── README.md ├── app.js ├── package.json └── views/ └── index.ejs ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ node_modules ================================================ FILE: README.md ================================================ # NodeUploads An example of how to upload images locally with Node.js and Multer. ### Version 1.0.0 ## Usage ### Installation Install the dependencies ```sh $ npm install ``` ### Serve To serve in the browser ```sh $ npm start ``` ## App Info ### Author Brad Traversy [Traversy Media](http://www.traversymedia.com) ### Version 1.0.0 ### License This project is licensed under the MIT License ================================================ FILE: app.js ================================================ const express = require('express'); const multer = require('multer'); const ejs = require('ejs'); const path = require('path'); // Set The Storage Engine const storage = multer.diskStorage({ destination: './public/uploads/', filename: function(req, file, cb){ cb(null,file.fieldname + '-' + Date.now() + path.extname(file.originalname)); } }); // Init Upload const upload = multer({ storage: storage, limits:{fileSize: 1000000}, fileFilter: function(req, file, cb){ checkFileType(file, cb); } }).single('myImage'); // Check File Type function checkFileType(file, cb){ // Allowed ext const filetypes = /jpeg|jpg|png|gif/; // Check ext const extname = filetypes.test(path.extname(file.originalname).toLowerCase()); // Check mime const mimetype = filetypes.test(file.mimetype); if(mimetype && extname){ return cb(null,true); } else { cb('Error: Images Only!'); } } // Init app const app = express(); // EJS app.set('view engine', 'ejs'); // Public Folder app.use(express.static('./public')); app.get('/', (req, res) => res.render('index')); app.post('/upload', (req, res) => { upload(req, res, (err) => { if(err){ res.render('index', { msg: err }); } else { if(req.file == undefined){ res.render('index', { msg: 'Error: No File Selected!' }); } else { res.render('index', { msg: 'File Uploaded!', file: `uploads/${req.file.filename}` }); } } }); }); const port = 3000; app.listen(port, () => console.log(`Server started on port ${port}`)); ================================================ FILE: package.json ================================================ { "name": "nodeuploads", "version": "1.0.0", "description": "Example for image uploading in Node", "main": "app.js", "scripts": { "start": "node app.js" }, "author": "", "license": "ISC", "dependencies": { "ejs": "^2.5.7", "express": "^4.16.2", "multer": "^1.3.0" } } ================================================ FILE: views/index.ejs ================================================