From 1cb1dade78823c790813a0f2e40237b22da12a23 Mon Sep 17 00:00:00 2001 From: Jon Jenkins <jondjenkins@gmail.com> Date: Sun, 6 Apr 2014 08:42:25 -0600 Subject: added easyimage for thumbnails --- README.md | 6 +++++- package.json | 5 +++-- server.js | 38 ++++++++++++++++++++++++++++++++++---- static/js/upload.js | 5 ++++- 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 447440d..71a8b0d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ express-upload ============== -express-upload: node.js, express, multer, html5 progress upload example \ No newline at end of file +express-upload: node.js, express, multer, easyimage, html5 progress upload example + +##Image Handling + +Uses node module easyimage for thumbnail creation to demonstrate resize upon upload \ No newline at end of file diff --git a/package.json b/package.json index 3b71c81..dcaa4e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "express-upload", - "description": "express-upload: node.js, express, multer, html5 progress upload example", + "description": "express-upload: node.js, express, multer, easyimage, html5 progress upload example", "version": "0.0.1", "engines": { "node": ">= 0.10.x" @@ -8,6 +8,7 @@ "private": true, "dependencies": { "express": "3.x", - "multer": "0.x" + "multer": "0.x", + "easyimage": "0.x" } } \ No newline at end of file diff --git a/server.js b/server.js index 88abe05..51e2608 100644 --- a/server.js +++ b/server.js @@ -1,6 +1,20 @@ -var express = require('express'); -var app = express(); -var multer = require('multer'); +var express = require('express'), + app = express(), + multer = require('multer'), + img = require('easyimage'); + +var imgs = ['png', 'jpg', 'jpeg', 'gif', 'bmp']; // only make thumbnail for these + +function getExtension(fn) { + return fn.split('.').pop(); +} + +function fnAppend(fn, insert) { + var arr = fn.split('.'); + var ext = arr.pop(); + insert = (insert !== undefined) ? insert : new Date().getTime(); + return arr + '.' + insert + '.' + ext; +} app.configure(function () { app.use(multer({ @@ -13,7 +27,23 @@ app.configure(function () { }); app.post('/api/upload', function (req, res) { - res.send({file: req.files.userFile.originalname, savedAs: req.files.userFile.name}); + if (imgs.indexOf(getExtension(req.files.userFile.name)) != -1) + img.info(req.files.userFile.path, function (err, stdout, stderr) { + if (err) throw err; +// console.log(stdout); // could determine if resize needed here + img.rescrop( + { + src: req.files.userFile.path, dst: fnAppend(req.files.userFile.path, 'thumb'), + width: 50, height: 50 + }, + function (err, image) { + if (err) throw err; + res.send({image: true, file: req.files.userFile.originalname, savedAs: req.files.userFile.name, thumb: fnAppend(req.files.userFile.name, 'thumb')}); + } + ); + }); + else + res.send({image: false, file: req.files.userFile.originalname, savedAs: req.files.userFile.name}); }); var server = app.listen(3000, function () { diff --git a/static/js/upload.js b/static/js/upload.js index 26b2117..a8a0e5a 100644 --- a/static/js/upload.js +++ b/static/js/upload.js @@ -38,7 +38,10 @@ $(function () { var resJson = JSON.parse(xhr.responseText); status(resJson.file + ' done, choose a file'); setTimer(); - window.open('./uploads/' + resJson.savedAs, 'upload', 'status=1, height = 300, width = 300, resizable = 0'); + if (resJson.image) + window.open('./uploads/' + resJson.savedAs, 'upload', 'status=1, height = 300, width = 300, resizable = 0'); + else + console.log('not an image'); }; xhr.send(formData); return false; // no refresh -- cgit v1.2.3