Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const mongoose = require('mongoose');
- const app = express.Router();
- const User = mongoose.model('User');
- const md5 = require('md5');
- const path = require('path');
- const fs = require('fs');
- const formidable = require('formidable');
- const readChunk = require('read-chunk');
- const fileType = require('file-type');
- const bodyParser = require('body-parser');
- const userModel = require('../../models/user');
- app.post('/', function (req, res) {
- const user = new User();
- var photos = [],
- form = new formidable.IncomingForm();
- // Tells formidable that there will be multiple files sent.
- form.multiples = false;
- // Upload directory for the images
- form.uploadDir = path.join(__dirname, '../../tmp_uploads');
- // Invoked when a file has finished uploading.
- form.on('file', function (name, file) {
- // Allow only 1 files to be uploaded.
- if (photos.length === 1) {
- fs.unlink(file.path);
- return true;
- }
- var buffer = null,
- type = null,
- filename = '';
- buffer = readChunk.sync(file.path, 0, 262);
- type = fileType(buffer);
- // Check the file type, must be either png,jpg or jpeg
- if (type !== null && (type.ext === 'png' || type.ext === 'jpg' || type.ext === 'jpeg')) {
- // Assign new file name
- filename = md5(Date.now() + '-' + file.name) + '.' + type.ext;
- user.profileImage = '/uploads/' + filename;
- // Move the file with the new file name
- fs.rename(file.path, path.join(__dirname, '../../uploads/' + filename));
- // Add to the list of photos
- photos.push({
- status: true,
- filename: filename,
- type: type.ext,
- publicPath: 'uploads/' + filename
- });
- } else {
- photos.push({
- status: false,
- filename: file.name,
- message: 'Invalid file type'
- });
- fs.unlink(file.path);
- }
- });
- form.on('field', function (name, field) {
- //console.log(name + ': ' + field);
- if (name == 'username') user.username = field;
- if (name == 'email') user.email = field;
- if (name == 'password') user.password = field;
- if (name == 'firstName') user.firstName = field;
- if (name == 'lastName') user.lastName = field;
- if (name == 'gender') user.gender = field;
- });
- form.on('error', function (err) {
- console.log('Error occurred during processing - ' + err);
- });
- // Invoked when all the fields have been processed.
- form.on('end', function () {
- console.log('All the request fields have been processed.');
- console.log(user);
- saveUser();
- });
- async function saveUser() {
- await user.save().then(() => {
- console.log('User added to Database');
- //res.send('User added');
- })
- .catch(err => console.error('There\'s an ERROR: ', err.message));
- }
- // Parse the incoming form fields.
- form.parse(req, function (err, fields, files) {
- res.status(200).end();
- });
- });
- module.exports = app;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement