簡體   English   中英

使用自定義中間件上傳Sails.js(0.10.5)文件

[英]Sails.js (0.10.5) file upload with custom middleware

我現在有一個sals.js應用程序正在維護,但由其他開發人員編寫。 我不太精通帆,也很難實現文件上傳。

總的來說,我了解到Sails可以使用船長處理文件上傳,並且可以通過船長使用上載API。 此外,我設法創建了一個新的裸機應用程序,並且能夠按照文檔中提供的示例進行文件上傳。

在我的完整應用程序中,http配置中有一些自定義項。 在我的控制器, req.fileundefined (如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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM