我使用Perl Catalyst框架构建一个需要在MySQL数据库中存储多个文件的应用程序(以及其他内容)。我想存储文件的名称,路径,扩展名等,以便以后检索它们;因为应该可以从应用程序访问它们(例如:为某人上传的PDF文档,以后必须可供下载)。我可以这样做吗?我在PHP中找到了几种方法,但perl没有。有什么想法吗?
修改
我知道我可以使用Catalyst :: Request :: Upload访问一些信息。我过去用它来进行BLOB存储,但我不知道如何获取文件信息,也不知道如何知道催化剂存储tmp文件的位置。
所以,基本上,尝试这个时出现的问题是:
编辑2
我再次检查了Catalyst :: Request :: Upload(http://search.cpan.org/~jjnapiork/Catalyst-Runtime-5.90114/lib/Catalyst/Request/Upload.pm)的文档,并了解了如何知道我的文件存储在哪里和如何将它们复制到新的非tmp位置。唯一的问题仍然存在:
如何为这些文件生成下载链接?
答案 0 :(得分:1)
解决方案非常简单。
现在,使用Catalyst :: Request :: Upload创建包含上传文件的文件对象。排序......
my $upload = $req->upload('input_field_name');
现在确保从文件中获取要存储的所有数据。我个人而言,只获得了文件名,MIME类型和大小。
my $filename = $upload->filename;
my $size = $upload->size;
my $type = $upload->type;
存储到数据库中。
现在,在页面的公共内容中创建一个文件夹以将文件复制到,并执行以下复制:
$upload->copy_to('path/to/the/public/folder');
要检索文件,只需创建一个链接,其中包含公用文件夹的基本URL和存储在数据库中的文件名。
希望它对某人有所帮助......但这很明显;但它让我的脑袋有点崩溃了。