我如何创建位于与我们托管应用程序的服务器不同的服务器中的视频的 createReadStream
How can i create createReadStream of a video located in a different server from that where we host the application
我有一个 nestjs 项目,我需要在其中存储视频并将它们的路径保存在 mysql 数据库中我的问题是:我如何创建这些视频之一的 createReadStream 知道视频和数据库将在一台服务器上,而应用程序将在另一台服务器上??
fs.createReadStream()
如果你给它一个 full
OS 路径就可以正常工作。如果您遇到问题,那么我们需要看看您的“绝对路径”是什么。
通常,您不会在数据库中存储完整的 OS 路径,因为这会将您的实现“硬连接”到特定的磁盘布局。相反,您通常只将相对路径存储在数据库中,然后将其与作为应用程序配置一部分的基本路径结合起来。如果您需要重新安排事物在磁盘上的存储方式,而不必重写数据库中的每个路径,这将为您提供更大的灵活性。相反,您可以只更改配置中的基本路径以指向新路径。
例如,假设您超出了当前系统磁盘的容量并添加了一个更快更大的新磁盘。当只在数据库中存储相对路径时,您可以关闭您的应用程序,将所有文件复制到新磁盘,然后调整您的应用程序中的基本路径,重新启动您的应用程序,它就会启动 运行新位置。如果您在数据库中存储了绝对路径,则必须编写一个数据库脚本来将数据库中的每个路径重写到新位置。
can i host the database in one server and the application in anthor ? if yes how can i do that ??
数据库可以在任何你想要的地方。但是,您想要作为对 http 请求的响应而流式传输的文件本身必须可以从 Web 服务器访问。如果您想使用 fs.createReadStream()
作为流式传输它们的源,则必须可以通过 OS 文件路径访问这些文件,因为 fs.createReadStream()
仅适用于文件路径。如果文件存储在没有 OS 文件路径访问您的网络服务器的其他地方(比如在云服务中),您必须找到其他方法 read/stream 从您的网络服务器。
How can I create a createReadStream of one of these videos knowing that the videos and the database will be in one server and the application in another server
仅当您对另一台服务器具有 OS 级别的文件访问权限时(可能通过某些共享文件系统机制),您才可以使用 fs.createReadStream()
。例如,文件可以存储在一些共享文件服务器上。
如果您没有 OS 级别的文件访问权限,那么您将必须评估您拥有的访问权限类型,并选择一种适当的机制从那里流式传输文件。例如,如果您可以通过 Web 访问这些文件(它们可以通过一些 URL 访问),那么您可以重定向客户端以直接从其他 Web 服务器获取文件,或者您可以从其他服务器流式传输它们你自己使用支持流式传输的 http 库,例如 got()
or axios()
。然后,您可以将该 http 流通过管道传输到您的响应中——类似于您对来自 fs.createReadStream()
.
的流所做的操作
我有一个 nestjs 项目,我需要在其中存储视频并将它们的路径保存在 mysql 数据库中我的问题是:我如何创建这些视频之一的 createReadStream 知道视频和数据库将在一台服务器上,而应用程序将在另一台服务器上??
fs.createReadStream()
如果你给它一个 full
OS 路径就可以正常工作。如果您遇到问题,那么我们需要看看您的“绝对路径”是什么。
通常,您不会在数据库中存储完整的 OS 路径,因为这会将您的实现“硬连接”到特定的磁盘布局。相反,您通常只将相对路径存储在数据库中,然后将其与作为应用程序配置一部分的基本路径结合起来。如果您需要重新安排事物在磁盘上的存储方式,而不必重写数据库中的每个路径,这将为您提供更大的灵活性。相反,您可以只更改配置中的基本路径以指向新路径。
例如,假设您超出了当前系统磁盘的容量并添加了一个更快更大的新磁盘。当只在数据库中存储相对路径时,您可以关闭您的应用程序,将所有文件复制到新磁盘,然后调整您的应用程序中的基本路径,重新启动您的应用程序,它就会启动 运行新位置。如果您在数据库中存储了绝对路径,则必须编写一个数据库脚本来将数据库中的每个路径重写到新位置。
can i host the database in one server and the application in anthor ? if yes how can i do that ??
数据库可以在任何你想要的地方。但是,您想要作为对 http 请求的响应而流式传输的文件本身必须可以从 Web 服务器访问。如果您想使用 fs.createReadStream()
作为流式传输它们的源,则必须可以通过 OS 文件路径访问这些文件,因为 fs.createReadStream()
仅适用于文件路径。如果文件存储在没有 OS 文件路径访问您的网络服务器的其他地方(比如在云服务中),您必须找到其他方法 read/stream 从您的网络服务器。
How can I create a createReadStream of one of these videos knowing that the videos and the database will be in one server and the application in another server
仅当您对另一台服务器具有 OS 级别的文件访问权限时(可能通过某些共享文件系统机制),您才可以使用 fs.createReadStream()
。例如,文件可以存储在一些共享文件服务器上。
如果您没有 OS 级别的文件访问权限,那么您将必须评估您拥有的访问权限类型,并选择一种适当的机制从那里流式传输文件。例如,如果您可以通过 Web 访问这些文件(它们可以通过一些 URL 访问),那么您可以重定向客户端以直接从其他 Web 服务器获取文件,或者您可以从其他服务器流式传输它们你自己使用支持流式传输的 http 库,例如 got()
or axios()
。然后,您可以将该 http 流通过管道传输到您的响应中——类似于您对来自 fs.createReadStream()
.