我想在客户端通过nginx和FileAPI实现文件上传。所以我有以下问题:
www.mysite.com/files/011/b0f/639/011b0f639f69491e9e4cbaf41656297f.jpg
?答案 0 :(得分:1)
这是nginx-upload-module或此任务的模块更好的套件 本地客户端只是文件或其他东西?
我刚看了nginx-upload-module
,这是一个 7岁 nginx模块来处理多部分请求。 Nginx多年来一直支持分段上传,因此只要您没有运行7年版本,就不需要对nginx设置进行任何更改!
对于剩下的问题,我将给你一个例子,使用:
您可以使用其他库来执行相同的操作,但这将向您展示一种轻松完成此操作的方法。为了这个例子,它只在一个文件中。
var express = require('express');
var multer = require('multer');
var md5 = require('MD5');
var Q = require('q');
var Thumbnail = require('thumbnail');
var app = express();
var targetFolder = '/var/www/mysite/files/full/';
var thumbnailFolder = '/var/www/mysite/files/thumbs/';
var thumbnail = new Thumbnail(targetFolder, thumbnailFolder);
var makeThumbnail = Q.nbind(thumbnail.ensureThumbnail,thumbnail);
var thumbnailSizes = [30,96,128];
app.post('/upload', function(req,res,next) {
//Check the authentication here, this is the first middleware.
if(authenticated) {
next();
} else {
res.send(401);
}
}, multer({
dest: targetFolder,
rename: function (fieldname, filename) {
//Rename the file with it's name + date hash
return md5(filename + Date.now());
},
onFileUploadComplete: function(file, req, res) {
var resizePromises = [];
for(var i in thumbnailSizes) {
var p = makeThumbnail(file.name,thumbnailSizes[i],thumbnailSizes[i]);
resizePromises.push(p);
}
Q.all(resizePromises).done(function(){
// The file has been resized to the specified format.
res.send(200);
},function(err) {
console.log(err);
res.send(500);
// Error !
});
}
});