[英]Sails.js (0.10.5) file upload with custom middleware
我現在有一個sals.js應用程序正在維護,但由其他開發人員編寫。 我不太精通帆,也很難實現文件上傳。
總的來說,我了解到Sails可以使用船長處理文件上傳,並且可以通過船長使用上載API。 此外,我設法創建了一個新的裸機應用程序,並且能夠按照文檔中提供的示例進行文件上傳。
在我的完整應用程序中,http配置中有一些自定義項。 在我的控制器, req.file
是undefined
(如files
)。
另外,比較完整版和測試版應用程序的config / http.js,結構也有所不同。 AFAIK,真實和測試應用程序均為0.10.5(但在我的計算機上,全局帆為0.12.x,盡管在新的應用程序文件夾中看到帆為0.10.5,並且我確實運行了從0.10.5文件夾創建腳本的腳本) 。
通過閱讀一些內容,似乎我配置不正確,或者我的替代項忽略了中間件鏈中的船長。 這也可能是配置文件不兼容的問題,因為我的真實應用的初始版本是在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
功能? 也許我應該以某種方式更新/升級配置文件?
因此,事實證明這很簡單-Sails(約10版)使用船長作為主體解析器。 Skipper包含上傳文件所需的功能。 在上面,指定bodyParser
會覆蓋此內容,因此,我沒有獲得file
功能和其他內置的船長功能。
現在,我必須返回到使用船長(將需要進行徹底的測試以確保沒有中斷),或包括其他中間件來促進文件上傳...(對此有何評論?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.