gpt4 book ai didi

mysql - 使用 Catalyst 使用 DBIC 将文件存储在数据库中

转载 作者:行者123 更新时间:2023-11-29 06:01:41 24 4
gpt4 key购买 nike

我正在使用 Perl Catalyst 框架构建一个需要在 MySQL 数据库中存储多个文件(以及其他内容)的应用程序。我想存储文件的名称、路径、扩展名等以便稍后检索;因为它们应该可以从应用程序访问(例如:为某人上传的 PDF 文档,以后必须可供下载)。我可以这样做吗?我找到了几种在 PHP 中执行此操作的方法,但没有一种方法适用于 perl。有什么想法吗?

编辑

我知道我可以使用 Catalyst::Request::Upload 访问一些信息。我过去用它来存储 BLOB,但我不知道如何获取文件信息,也不知道催化剂在哪里存储 tmp 文件。

所以,基本上,尝试这样做时出现的问题是:

  1. 提交后如何知道我的文件存储在哪里?
  2. 如何将这些文件(我假设这些文件位于某处的 tmp 文件夹中)复制到我的计算机/服务器中的文件夹中?
  3. 存储这些文件后如何检索它们?

编辑 2

我再次检查了 Catalyst::Request::Upload ( http://search.cpan.org/~jjnapiork/Catalyst-Runtime-5.90114/lib/Catalyst/Request/Upload.pm ) 的文档,并了解了如何知道我的文件存储在哪里 以及如何复制它们到一个新的非 tmp 位置。剩下的唯一问题:

如何为这些文件生成下载链接?

最佳答案

解决方案非常简单。

  • 首先确保您的“tmp”文件夹已在 Catalyst 应用文件中配置(例如:MyApp.pm)。
  • 现在,使用 Catalyst::Request::Upload 使用上传的文件创建文件对象。有点……

     my $upload = $req->upload('input_field_name');
  • 现在确保您从文件中获取了要存储的所有数据。我个人只得到了文件名、MIME 类型和大小。

    my $filename = $upload->filename;
    my $size = $upload->size;
    my $type = $upload->type;
  • 存入数据库。

  • 现在,在页面的公共(public)内容中创建一个文件夹以将文件复制到其中,然后像这样执行复制:

    $upload->copy_to('path/to/the/public/folder');
  • 要检索文件,只需使用指向公共(public)文件夹的基本 URL 和您存储在数据库中的文件名创建一个链接。

希望它对某人有所帮助……不过,这很明显;但这让我有点头疼。

关于mysql - 使用 Catalyst 使用 DBIC 将文件存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44420235/

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