gpt4 book ai didi

javascript - 如何在Node.js中的服务器目录上方获取文件

转载 作者:行者123 更新时间:2023-12-03 06:28:19 28 4
gpt4 key购买 nike

我正在尝试使用node.js服务器提供音频文件。问题是,我希望能够在计算机中获取任何音频文件,但我不知道如何在html中制作音频元素以与服务器上方的目录一起使用。我发现了一个this问题,但是由于我希望能够始终更改的文件并没有帮助。

该项目基本上是浏览器上的媒体播放器。它将在LAN上,因此为计算机中的所有内容提供服务并不是真正的问题。我已经在使用express的静态功能来处理图片,javascript和CSS。应用程序使用nedb保留路径,名称和其他信息。

最佳答案

首先,您必须了解node.js默认情况下不提供任何文件。因此,您必须手动编码每个单独的请求,以便/foo请求从某些特定的文件或代码生成内容。或者,您必须创建一组映射,其中/content/foo告诉服务器读取服务器上相应的目录,例如/myservercontent/foo

并且,有多种工具可帮助您为文件的整个目录层次结构(例如express.static())创建此映射。但是,任何这样的映射都具有显式的根,其中所有请求都相对于某个根。您可以定义该根目录在服务器上的位置。它甚至可以是服务器的根目录(尽管出于各种原因从不建议这样做)。通常,此根目录设置为硬盘上的某个父目录,该目录仅在该父目录下包含公共Web内容。这样一来,您就永远不会出现一些随机的Web用户可以访问您不打算公开的文件的情况(例如HTTPs证书,数据库,服务器代码,密码文件等)。 。

综上所述,node.js允许您执行几乎所有您想做的事情。如果您想访问硬盘驱动器上任意位置的随机文件(我绝对不建议这样做),则可以轻松编写node.js来实现。有几种方法可以实现它。一个简单的方法是仅构造一个接受查询参数的路由,其中​​查询参数指定所需文件的路径,然后让该路由句柄读取该文件并返回它。这是一个巨大的安全漏洞,足以让卡车驶过,所以我永远不会推荐这样做。

相反,您真正应该做的是收集希望通过服务器提供的所有文件,并将它们放入一个安全的目录层次结构中,然后允许访问该特定目录层次结构中的文件,而不是硬盘驱动器上的其他任何位置。



现在,您已经对自己的工作进行了更多的解释,这是一个想法:


扫描本地硬盘以识别您认为可以安全共享的所有音频文件。请务必非常小心,因为在这里的错误可能会带来很大的安全漏洞,因此您决定分享什么。由于我们不了解完整的上下文,因此您必须评估您在此处所做的安全风险。
当您收集此音频文件列表时,请将列表保存到服务器正在使用的某种数据存储中,以便您可以在以后的任何时间快速访问该列表。我建议您为每个音频文件创建一个唯一的ID,以使将来更易于引用。
然后,您可以为远程用户提供这些音频文件的列表,然后他们可以选择一个。然后,可以将他们选择的音频文件作为播放特定音频文件的请求的一部分发送到服务器。我建议仅出于安全考虑,仅应通过ID请求文件,但是如果您的用户界面很重要或相关,则可以选择显示原始路径名。
当服务器收到播放具有特定ID的音频文件的请求时,它可以查询其数据存储以找出哪个音频文件是具有特定ID的音频文件。这是重要的一步,因为强制客户端按ID(而不是路径)请求文件使得客户端只能请求您之前扫描过的音频文件,并认为可以安全公开。远程客户端可以请求您不打算共享的其他文件,不会存在任何漏洞。
服务器在数据存储中查找并找到具有该特定ID的音频文件后,便可以从数据存储中查找本地路径,然后可以读取音频文件并将其发送/传输到远程客户端。




例如,在步骤3和4中,客户端可以发送如下所示的URL:

http://someserver/play/5934902

那就是播放ID为5934902的音频文件的请求。然后,您的服务器将具有/play/:id的路由处理程序,该处理程序将使用id来执行步骤4和5。

关于javascript - 如何在Node.js中的服务器目录上方获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38544628/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com