【问题标题】:Where to store uploaded files (sound, pictures and video)存储上传文件(声音、图片和视频)的位置
【发布时间】:2010-02-08 18:54:40
【问题描述】:

有一阵子我不得不开发一个音乐网站,允许将音频文件上传到网站,然后使用 ffmpeg 转换为各种格式,然后人们会在购买后下载上传的音频文件,然后 tmp 文件会被创建并放置在下载位置,并且仅对每个下载实例有效,然后 tmp 文件将被删除。

现在我正在重新审视这个项目,我还必须添加图片和视频作为上传内容。

我想找到存储文件的最佳方法,

选项1:将文件存储在文件夹中并在数据库中引用它们

选项 2:将实际文件作为 blob 存储在数据库(mysql)中。

我正在玩弄这个想法,以考虑每种方法的安全隐患,以及我可能没有计算过的其他问题。

【问题讨论】:

    标签: php mysql storage blob


    【解决方案1】:

    查看之前的 StackOverflow 问题Storing images in a database, Yea or nay?

    我知道你提到了图像和视频,但是这个问题与所有大型二进制内容媒体文件有关。

    共识似乎是将文件路径存储到文件系统上的图像,而不是实际图像是要走的路。

    【讨论】:

      【解决方案2】:

      我建议存储为文件并将它们的位置存储在数据库中。

      将文件存储在数据库中需要更多资源,并且会降低备份/恢复数据库的速度。 您真的希望每次进行数据库转储时都必须传输大量视频吗? 文件系统非常适合分发文件,您可以非常轻松地备份/同步它们。

      【讨论】:

        【解决方案3】:

        我会选择数据库选项。我在许多项目中使用过它,一些非常大的 100+GB。存储实现是关键,如果设计不好,你的表现就会受到惩罚。请参阅this 示例了解一些好的实现思路:
        数据库存储允许更高的可扩展性和安全性。

        【讨论】:

          【解决方案4】:

          我会直接将文件存储在磁盘上,而数据库只保存它们的 ID/url。

          这种方式访问​​这些文件(可以是大的二进制文件)不需要任何 php/database 操作,它是由网络服务器直接完成的。
          此外,如果您愿意,将这些文件移动到另一台服务器会更容易。

          实际上只有一个好处,我可以看到将它们存储在数据库中的 atm 更容易备份 - 你无论如何都想备份你的数据库,这样你就可以将所有数据放在一个地方,并且你可以确保每个备份都是完整的(即您的磁盘上没有数据库条目未使用的文件;并且您的数据库中没有指向无处的图像 ID)

          【讨论】:

            【解决方案5】:

            我要求similar question using Oracle 作为 Windows 窗体应用程序的后端。

            答案归结为您对备份和恢复文件的要求。如果该要求很重要,那么使用数据库会更容易(因为无论如何您都在备份数据库,对吧?:o)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-02-25
              • 2018-02-19
              • 2018-06-19
              • 1970-01-01
              • 2010-12-10
              • 1970-01-01
              相关资源
              最近更新 更多