我正在使用 Ruby on Rails 将文件上传到服务器。
通常情况下,这是一个文本文件,我会将其保存在 Submission ActiveRecord 中的“file”字段中,并与其他字段(例如提交标题等)一起保存。
但是,用户也可以提交压缩文件。在这种情况下,应该解压缩 zipfile 并为 zip 中的每个文件创建一个新的 Submission,其中包含相同的文本字段,但是有当前文件。
我该怎么做呢?
我查看了网上的解压示例,但大多数都使用目录将文件解压缩。我不确定是否需要这样做,因为在 SubmissionsController 的当前 create 方法中,接收到一个文件对象,我认为当 Submission 保存方法被调用时,会自动生成保存文件的路径。所以我想也许我应该在内存中解压 zipfile,以获得文件对象数组,然后使用每个文件对象创建一个新的 Submission,但是使用相同的字段,并让 ActiveRecord 在将它们保存到数据库时为每个字段生成文件路径。 我可能错了,因为我对 Rails 和 Ruby 还比较新。
file
是 ZipEntry 类型而不是 File 类型,所以我无法使用 Submissions 保存它。 - siamiizip_file.extract(f, f_path) unless File.exist?(f_path)
。 - Ben Lee