summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Jenkins <jondjenkins@gmail.com>2014-04-06 08:42:25 -0600
committerJon Jenkins <jondjenkins@gmail.com>2014-04-06 08:42:25 -0600
commit001daa60f1741c8df4dac9a520006d9cb443e12a (patch)
tree310cdcde997c421d73414efd4875baeb89b40c0f
parent555680e9eaac75de3660464075a40e8294e1a8f2 (diff)
downloadexpress-upload-001daa60f1741c8df4dac9a520006d9cb443e12a.tar.gz
express-upload-001daa60f1741c8df4dac9a520006d9cb443e12a.tar.bz2
express-upload-001daa60f1741c8df4dac9a520006d9cb443e12a.zip
added easyimage for thunbnails
-rw-r--r--README.md6
-rw-r--r--package.json5
-rw-r--r--server.js38
-rw-r--r--static/js/upload.js5
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