【发布时间】:2014-05-28 20:50:54
【问题描述】:
我正在开发一个小型门户网站,当我上传文件(图像)> ~25kb 时遇到了错误。我已经测试过这个系统,它适用于小图像,但是当我尝试使用更大的图像时,一切都中断了。
我正在使用最新版本的节点,表达 3.4.0,multer 0.0.7,这里是有问题的代码:
服务器:
var express = require('express'),
multer = require('multer'),
api = require('./routes/api.js'),
http = require('http'),
path = require('path'),
app = express(),
server = http.createServer(app);
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.set('port', process.env.VCAP_APP_PORT || 7000);
app.use(multer({dest: __dirname + '/uploads/'}))
app.use(app.router);
app.configure(function()
app.use("/uploads",express.static(__dirname + '/uploads'));
app.post('/api/upload/file', api.upload);
app.use(function(err, req, res, next) {
if(!err) return next();
console.log(err.stack);
res.json({error: true});
});
app.use(multer({
dest:'./uploads/',
rename: function (fieldname, filename) {
return filename.replace(/\W+/g, '-').toLowerCase();
}
}));
});
server.listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
还有api.upload函数:
exports.upload = function(req, res) {
console.log("Upload");
var resumeName = null,
picName = null;
console.log("File: " + JSON.stringify(req.files));
if(req.files.resume.size >= 0 || req.files.pic.size >= 0) {
if(req.files.resume.size > 0) {
resumeName = req.files.resume.name;
}
if(req.files.pic.size > 0) {
picName = req.files.pic.name;
}
console.log("Got file");
}
console.log("sending...");
res.send({picName: picName, resumeName: resumeName});
}
如果有帮助的话,我的前端是有角度的,我正在使用 restangular 和 ng-upload 来协助提交和上传文件。
【问题讨论】:
标签: node.js file-upload express mean-stack