首页 > 解决方案 > fs existsSync() 适用于 Localhost 但不适用于 Digital Ocean Droplet

问题描述

我目前正在开发一个在 Digital Ocean 液滴上运行的 Node 应用程序。该应用程序接受post用户的请求(通过连接到网站的另一个应用程序),以上传文件。我通过 Node fs 扩展来做到这一点。请求处理程序中的代码post读取

        var fileNameOrginalIndexArray = fileNameOriginal.split("\\");
        fileNameOriginalAttempt1 = fileNameOrginalIndexArray.join("/");// C:
        fileNameOriginalAttempt2 = 
            "/mnt/" + fileNameOrginalIndexArray[0].charAt(0).toLowerCase() + "/"
            + fileNameOrginalIndexArray.slice(1, fileNameOrginalIndexArray.length).join("/");// /mnt/c
        if(fs.existsSync(fileNameOriginalAttempt1)){
            fs.createReadStream(fileNameOriginalAttempt1).pipe(streamwrite);
        }
        else if(fs.existsSync(fileNameOriginalAttempt2)){
            fs.createReadStream(fileNameOriginalAttempt2).pipe(streamwrite);
        }
        else{
            res.send("ROOM IMAGE POST ERROR");
        }

它正在目录中寻找所请求的文件C:\,以及/mnt/c/. 现在,当我在 localhost 上运行应用程序时,整个检查以查看文件是否存在的操作非常可爱;但是当我通过我的 Digital Ocean droplet 运行应用程序时,它说文件不存在。

我怀疑这与它在本地计算机上运行而不是在服务器上运行时检查我的本地计算机有关;但坦率地说,我对为什么会发生这种情况一无所知。有人能告诉我为什么在本地主机上运行应用程序时使用 fs 找到我的文件,但在 Digital Ocean 液滴上运行应用程序时却没有?提前致谢!

标签: javascriptnode.jsfilewebdigital-ocean

解决方案


推荐阅读