5

I managed to setup https://github.com/aguidrevitch/jquery-file-upload-middleware with express.js 4.0 but am having difficulties configuring it.

Here's my upload script:

var upload = require('jquery-file-upload-middleware'); upload.configure({ imageVersions: { thumbs: { width: 80, height: 80 }, prev: { width: 1280, height: 1024 } } }); app.use('/admin/upload', function (req, res, next) { // imageVersions are taken from upload.configure() upload.fileHandler({ uploadDir: function () { return __dirname + '/public/uploads/' + req.session.eventID; } })(req, res, next); }); 

Uploading a Chicken.jpg file i get the following structure:

/public/uploads/ -> public uploads folder 534a8d502e889f8d6bf9cc07/ -> upload session folder prev/ -> resized version folder Chicken.jpg thumbs/ -> another resized version folder Chicken.jpg Chicken.jpg -> original file 

This is what i'm trying to achieve:

  1. Move the original file /public/uploads/534a8d502e889f8d6bf9cc07/Chicken.jpg out of the /public/uploads folder while keeping the resized versions in place.
  2. Add a watermark to the /public/uploads/534a8d502e889f8d6bf9cc07/prev/Chicken.jpg file.

Can anyone please advise?

Thank you!

1 Answer 1

0

How to move the original file :

On jquery-file-upload-middleware website, it explains how to move a file, and if you read their documentation, how to move a file with a custom suffix (User ID, Session ID, etc.) :

app.use('/api', function (req, res, next) { req.filemanager = upload.fileManager(); next(); }); app.use('/api/endpoint', function (req, res, next) { // your real /api handler that will actually move the file ... // req.filemanager.move(filename, path, function (err, result)) req.filemanager.move('SomeFile.jpg', 'project1', function (err, result) { // SomeFile.jpg gets moved from uploadDir/SomeFile.jpg to // uploadDir/project1/SomeFile.jpg // if path is relative (no leading slash), uploadUrl will // be used to generate relevant urls, // for absolute paths urls are not generated if (!err) { // result structure // { // filename: 'SomeFile.jpg', // url: '/uploads/project1/SomeFile.jpg', 

If you don't want to do this, (This post) explains how you can move a file from one location to another with node. I changed the unlinkSync() to unlink()

var fs = require('fs'); //var util = require('util'); var is = fs.createReadStream('source_file'); var os = fs.createWriteStream('destination_file'); is.pipe(os); is.on('end',function() { fs.unlink('source_file', function(err){ // Continue execution }); }); /* node.js 0.6 and earlier you can use util.pump: util.pump(is, os, function() { fs.unlink('source_file', function(err){ // Continue execution }); }); */ 

Add a watermark to a file

This post explains how, with node, you can spawn a child process and use ImageMagick to add a watermark to an image :

 // Require our module dependencies var exec = require('child_process').exec; // Create command array to invoke ImageMagick composite where // -dissolve is the amount of transparency for the watermark // -gravity tells how to align images of varying size // -quality is the image quality of the JPEG (not required if producing PNG) var command = [ 'composite', '-dissolve', '50%', '-gravity', 'center', '-quality', 100, pathToWatermarkJpg, pathToImageJpg, pathToResultJpg; ]; // Join command array by a space character and then execute command exec(command.join(' '), function(err, stdout, stderr) { // Do stuff with result here }); 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.