Skip to content

Instantly share code, notes, and snippets.

@maylisdoucet
Created April 16, 2018 09:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maylisdoucet/b64194f273cc86d2e698b844846f8c72 to your computer and use it in GitHub Desktop.
Save maylisdoucet/b64194f273cc86d2e698b844846f8c72 to your computer and use it in GitHub Desktop.
uploadFile
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var usersRouter = require('./routes/users');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
var express = require('express');
var router = express.Router();
var multer = require('multer')
var upload = multer({ dest: 'tmp/' })
const fs = require('fs');
router.get('/sendFile', function (req, res, next) {
res.render('index', {sayHello: 'Veux-tu envoyer des fichiers ?'})
});
// Veux-tu envoyer des fichiers ?
router.post('/sendFile', upload.array('monfichier', 3), function (req, res, next) {
// traitement du formulaire
for (i in req.files) {
if ((req.files[i].size < 3000000) &&(req.files[i].mimetype == 'image/png')) {
// les deux conditions : fichier avec taille inférieur à 3mo et de type png !
fs.rename(req.files[i].path, 'public/images/' + req.files[i].originalname, function(err){
if (err) {
res.send('Problème !');
} else {
res.send('Fichier uploadé avec succès');
}
});
} else {
res.send('Le fichier est trop lourd. (Supérieur à 3 Mo)')
}
}
});
module.exports = router;
//Dans ton dossier contenant ton projet généré avec l'express-generator,
// tu vas créer une nouvelle route dans routes/index.js ;
// cette route sera en POST (/monupload) et permettra de gérer l'upload de fichiers.
// L'utilisateur pourra envoyer envoyer des images,
// seulement au format *.png
// et avec une taille inférieure à 3mo.
// Tu peux informer l'utilisateur du type de format accepté (png)
// grâce à l'attribut HTML accept. /*
extends layout
block content
h1= title
p Welcome to #{title}
form(method='POST', enctype='multipart/form-data', action='sendFile')
input(type='file', name='monfichier')
button envoyer
// l'action sendFile doit avoir le même nom que les routes get et post !
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment