5

Ich habe es geschafft, https://github.com/aguidrevitch/jquery-file-upload-middleware mit express.js 4.0 einzurichten, habe aber Schwierigkeiten bei der Konfiguration.jquery-file-upload-middleware mit express.js: wie man Dateien verschiebt & Wasserzeichen hinzufügt?

Hier ist mein Upload-Skript:

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); 

}); 

eine Chicken.jpg Datei i die folgende Struktur erhalten wird hochgeladen:

/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 

Das ist, was ich zu erreichen bin versucht:

  1. Verschieben Sie die Originaldatei /public/uploads/534a8d502e889f8d6bf9cc07/Chicken.jpg aus t Er /public/uploads Ordner, während die Größenänderungen beibehalten werden.
  2. Fügen Sie der Datei /public/uploads/534a8d502e889f8d6bf9cc07/prev/Chicken.jpg ein Wasserzeichen hinzu.

Kann jemand bitte beraten?

Vielen Dank!

Antwort

0

Wie die ursprüngliche Datei bewegen:

Auf jquery-file-upload-middleware Website erklärt, wie eine Datei zu bewegen, und wenn Sie ihre Dokumentation zu lesen, wie Sie eine Datei mit einem benutzerdefinierten Suffix (User-ID, Session bewegen ID usw.):

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', 

Wenn Sie dies nicht tun wollen, (This post) erklärt, wie Sie eine Datei von einem Ort zum anderen mit Knoten bewegen kann. Ich änderte die unlinkSync() zu entkoppeln()

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 
    }); 
}); 
*/ 

hinzufügen Wasserzeichen in eine Datei

This post erklärt, wie, mit Knoten, können Sie ein Kind Prozess erzeugen und verwenden ImageMagick ein Wasserzeichen hinzuzufügen, um ein Bild:

// 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 
}); 
Verwandte Themen