在node.js中创建/重新加载动态表达文件夹

时间:2017-07-09 18:36:34

标签: node.js express

我正在尝试创建文件并将它们放入文件夹,然后发送一个指向Microsoft Emotion API的链接。

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json({limit: '4mb'}));

app.use('/pics', express.static(path.join(__dirname, 'pics')))
app.post('/face', function(req, res){
    var base64Data = req.body.img.replace(/^data:image\/png;base64,/, "");
    var id;
    fs.readdir("./pics", (err, files) => {
        id = files.length;
        fs.writeFile(`./pics/${id}.png`, base64Data, 'base64', function(err) {
            console.log(err);
            reload(http, app);
            setTimeout(function(){
                fetch(`https://westus.api.cognitive.microsoft.com/emotion/v1.0/recognize`, {
                    method: "POST",
                    data: `{"url": "${"https://{ngrok-id}.ngrok.io/pics/"+id+".png"}"}`,
                    headers: {
                        'Content-Type': 'application/json',
                        'Ocp-Apim-Subscription-Key': '{api-key}'
                    }
                }).then(function(data) {
                    return data.json();
                }).then(function(data){
                    console.log(`{"url": "${"https://{ngrok-id}.ngrok.io/pics/"+id+".png"}"}`);
                    res.json(data);
                });
            }, 2000);
        });
    });
});

有没有办法让Express文件夹动态化或重新加载静态文件夹?

2 个答案:

答案 0 :(得分:0)

我认为你误解了静态一词。简而言之,它意味着:

  

静态[资产]是不会改变的事情。

关键词:不要改变。截至目前,您的逻辑表明您将改变文件夹中的文件,该文件夹应该是静态的。别这么做。

创建或使用不同的路径来改变文件。没有办法"重新加载文件夹",静态与否。您必须通过fs.readdir显式读取您正在执行的文件夹。

答案 1 :(得分:0)

您可以尝试尝试: https://nodemon.io

当其中的内容发生变化时,这将重新加载整个应用程序。

此工具是为开发目的而构建的,我从未在生产中尝试过。但也许它符合您的需求。