【发布时间】:2016-05-26 09:14:22
【问题描述】:
我现在正在维护一个sails.js 应用程序,但它是由不同的开发人员编写的。我不太精通风帆,难以实现文件上传。
一般来说,我了解sails 使用skipper 处理文件上传,并且上传API 可通过skipper 使用。此外,我设法创建了一个新的准系统应用程序,并且在其中我能够按照文档中提供的示例进行文件上传。
不过,在我的完整应用程序中,http 配置中有一些自定义项。在我的控制器中,req.file 是 undefined(files 也是如此)。
此外,比较完整应用程序和测试应用程序的 config/http.js 结构是不同的。 AFAIK,真实应用程序和测试应用程序都是 0.10.5(但在我的计算机上,全局风帆是 0.12.x,尽管在新的应用程序文件夹中我看到风帆 0.10.5 并且我确实运行了从 0.10.5 文件夹创建它的脚本) .
通过阅读,似乎我没有正确配置某些内容,或者我的覆盖忽略了中间件链中的 skipper。这也可能是配置文件不兼容的问题,因为我的真实应用程序的初始版本是在早期版本的 Sails 中开发的。
以下是我完整应用中 config/http.js 的内容:
/**
* Configure advanced options for the Express server inside of Sails.
*/
module.exports.http = {
bodyParser: function() {
return require('body-parser')({limit: '900mb'});
},
customMiddleware: function(app) {
var bodyParser = require('body-parser');
var expressJwt = require('../libs/express-jwt');
var experssJwtConfig = require('./jwt.js').jwt;
app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
next();
});
app.use('/api', expressJwt({secret: experssJwtConfig.secret}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
if(process.env.NODE_ENV == 'development') {
// just for local/development - serve static files
var express = require('express');
app.use('/custom1', express.static('D:/Temp/custom1/'));
app.use('', express.static(process.cwd() + '/assets/'));
}
}
};
/**
* HTTP Flat-File Cache
*/
module.exports.cache = {
// The number of seconds to cache files being served from disk
// (only works in production mode)
maxAge: 31557600000
};
想到了什么?有没有办法调试并查看为什么我在请求对象中没有 file 函数?也许我应该以某种方式更新/升级配置文件?
【问题讨论】:
标签: javascript node.js sails.js