gpt4 book ai didi

php - 从我的数据库查询音频文件到 PHP

转载 作者:行者123 更新时间:2023-11-29 21:28:46 25 4
gpt4 key购买 nike

我已将 mp3 文件上传到我的数据库。我制作了一个包含 id 列和 file 列的表格。我使用 phpMyAdmin 将 file 列中的 mp3 文件作为 LONGBLOB 上传。

CREATE TABLE voices
(
id int(5),
file longblob
);

如何在 HTML 音频标签中检索它?我知道我应该添加更多列来为我上传的文件提供更多信息,但这就像只是一个测试。

最佳答案

将 MP3 或图像上传到数据库通常被认为是一个坏主意,除非这些数据库是专门为提供该类型的内容而设计的,或者您有一个非常具体(且充分)的理由这样做。

话虽如此,您确实可以通过序列化 MP3 将 MP3 等内容上传到数据库的 BLOB 字段,但是您会拉伸(stretch) MySQL,并在将内容移入和移出数据库以提供内容时造成不必要的延迟。

您可以做的是使用数据库作为指向真实内容所在的指针。现在,其架构实际上取决于您要运营的规模。我会根据这个规模给你一些想法:

<强>1。 (非常)流量低

如果您预计不会有太多流量,并且您的应用程序在单个 Web 服务器中运行,您可能可以将内容上传到您的 Web 服务器具有读取访问权限并从那里提供内容的文件夹中。这甚至可能在您的应用程序目录中:

app_folder/media/mp3/your.mp3

然后您可以通过 HTML5 提供服务:

<source src="http://your_app_domain/media/mp3/your.mp3" type='audio/mp3' />

在这种情况下,您只需将 MP3 文件上传到 media/mp3/ 文件夹中,并将 MP3 的文件名 your.mp3 存储在数据库中或整个路径 media/mp3/your.mp3 取决于您的应用程序是否需要一些逻辑来构建文件的整个路径,或者它们是否都位于同一位置。

<强>2。交通适中

如果您的流量适中,则问题几乎相同,但需要注意的是您可能不会从单个 Web 服务器运行应用程序。这在实践中意味着,如果您允许上传并提供 MP3 内容,则需要尽快(如果不是立即)将其提供给所有网络服务器。

执行此操作的快速简便方法是将文件存储到某种 SAN 中,这将允许您将文件存储在网络共享磁盘中,这将使其同时可供所有网络服务器使用。但如今这个解决方案感觉有点“DIY”,而且趋势是看到越来越多的架构使用云进行静态内容存储。

这让我想到了下一个选项,即将您的 MP3 存储在 Amazon S3 中或类似的。为此,您需要使用 AmazonSDK将内容上传到 S3 存储桶。它与文件系统几乎相同,因此在数据库中您仍然需要存储文件名或存储它的整个路径。然后,要在音频控件中使用它,您需要构建将 S3 存储桶 URL 与数据库存储路径连接起来的 URL:

<source src="https://mybucket.s3-eu-west-1.amazonaws.com/path/to.mp3" type='audio/mp3' />

<强>3。交通繁忙

最后,如果您的流量很大,最好的建议是将您的 Assets 放在 CDN 后面。 。该解决方案与中等流量的解决方案几乎相同,但缓存 MP3 将为您节省大量数据库查询以检索 MP3 所在位置,并且还允许您的网站更快地提供内容,因为 CDN 可以提供内容来自靠近用户所在位置的数据中心。

关于php - 从我的数据库查询音频文件到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35391933/

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