【问题标题】:Can fs write to a user's *local* file system from a *deployed* node.js app?fs 可以从 *deployed* node.js 应用程序写入用户的 *local* 文件系统吗?
【发布时间】:2019-11-23 04:16:51
【问题描述】:

fs 能否从 已部署 node.js 应用程序写入用户的本地 文件系统(例如写入“下载”)?

当我在本地 (localhost:) 运行文件时,我能够做到这一点,但是当我在 Heroku 上部署代码时,相同的代码不会创建相同的文件。有可能吗?如果是这样,那么我将继续研究可能是目录/路径问题。如果没有,我不会再用头撞墙了!

提前谢谢你。

【问题讨论】:

    标签: node.js heroku fs


    【解决方案1】:

    fs 能否从已部署的 node.js 应用程序写入用户的本地文件系统(例如写入“下载”)?

    不,这根本不可能。服务器本身不能直接访问用户的本地文件系统(它在另一台计算机上,通常在一个或多个防火墙后面)。此外,浏览器不允许服务器通过浏览器直接写入用户的本地文件系统,这有很多很好的安全原因。

    想象一下,如果您访问的某个随机网站可以写入您自己的本地文件系统。如果不受信任的服务器能够访问您的本地文件系统,则可能会发生各种破坏。

    仅供参考,用户自己可以通过多种方式规避这些保护措施,但这些都涉及最终用户在其计算机上本地安装可以执行此操作的软件(例如浏览器插件或其他连接到服务器并代表服务器执行本地文件系统操作)。有时用户会被诱骗(例如勒索软件、病毒),有时有合法、安全的应用程序会这样做。但是,它需要最终用户在他们的计算机上安装额外的代码来启用这种类型的访问。

    仅供参考,服务器可以通过浏览器“提供”文件下载以进入用户本地计算机上的用户下载文件夹(或最终用户选择的任何文件夹),但这仍然需要最终用户确认并且不能在没有最终用户参与的情况下在浏览器中完成。如果服务器向浏览器请求发送正确类型的响应,则浏览器将提示用户下载。

    【讨论】:

    • 非常感谢。所以这不仅仅是我的无能! :) 。我现在画了一个空白,什么样的服务器响应可以触发浏览器询问用户是否要下载?我知道这是一个“事情”,但我对如何启动它持空白。再次感谢 jfriend00 的精彩回答!
    • @DesmondMullen - 我想您可能正在响应标头中寻找Content-Disposition: attachment; filename="filename.jpg",以告诉浏览器建议将此响应作为文件下载。
    • 太棒了!谢谢,我以前不熟悉这个。这将至少部分解决挑战。再次感谢@jfriend00,这非常有帮助!
    猜你喜欢
    • 1970-01-01
    • 2013-06-19
    • 2019-06-09
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多