我有一个 ruby 应用程序,自由职业者可以在其中为雇主完成工作。工作完成后,自由职业者可以上传文件供雇主审查。我认为自由职业者应该能够上传 zip 文件,但我不希望自由职业者能够上传无效或损坏的 zip 文件。有什么办法可以阻止这种情况或检查文件是否有效。我很确定是否有方法或函数可以执行此操作,它会在 rubyzip 库中,但我已经查看了他们的文档,但找不到我要找的东西。
最佳答案
这是一个天真的解决方案,它尝试打开 Zip 存档,如果成功则返回 true
,如果发生错误则返回 false
:
require 'zip'
def valid_zip?(file)
zip = Zip::File.open(file)
true
rescue StandardError
false
ensure
zip.close if zip
end
我相信 ZIP 格式包括其内容的 CRC32 校验和。如果您真的需要它超快,您可以从文件中读取这些内容并检查您计算的校验和。
关于ruby-on-rails - 在 Rails 中,我可以检查上传的 zip 文件是否损坏或无效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22079749/