在节点中结合multer和tinypng API

有谁知道如何使用MULTER使用tinyPNG的API ? 这些文件似乎看似简单:

var source = tinify.fromFile("unoptimized.jpg"); source.toFile("optimized.jpg"); 

虽然没有明确的迹象表明这将是什么意思去,特别是在这样一个令人费解的事情:

 var storage = multer.diskStorage( { destination: function (req, file, callback) { callback(null, './uploads'); }, filename: function (req, file, callback) { //use date to guarantee name uniqueness callback(null, file.originalname + '-' + Date.now()); } } ); //.any() allows multiple file uploads var upload = multer({ storage : storage}).any() app.post('/api/photo', function(req,res){ upload(req,res,function(err) { if(err) { return res.end("Error uploading file."); } res.end("File is uploaded"); }); }); 

我想在哪里“拦截”由multer上传的文件,以便我可以用tinyPNG压缩它?

先谢谢您的帮助!

使用以下基本示例更改上传的照片/图库文件:

 // Import express and multer. var express = require('express'); var multer = require('multer'); // Setup upload. var upload = multer({ dest: 'uploads/' }); var multipleFiles = upload.fields([{ name: 'photo', maxCount: 1 }, { name: 'gallery', maxCount: 8 }]); // Setup tinify. var tinify = require("tinify"); tinify.key = "YOUR_API_KEY"; // Get request handler for '/' path. var app = express(); app.get('/', function (req, res) { res.setHeader("Content-Type", "text/html"); res.end( "<form action='/api/photo' method='post' enctype='multipart/form-data'>" + "<input type='file' name='photo' />" + "<input type='file' name='gallery' multiple/>" + "<input type='submit' />" + "</form>" ); }); // Upload file handler with '/api/photo' path. app.post('/api/photo', multipleFiles, function (req, res) { req.files['gallery'].forEach(function(file) { // Your logic with tinify here. var source = tinify.fromFile(file.path); source.toFile(file.path + "_optimized.jpg"); }); res.end("UPLOAD COMPLETED!"); }); 

随意更改express中间件如何你需要它,只要确保你使用upload.fields和authentication使用tinify.key = "YOUR_API_KEY";