我有一个红宝石应用程序,自由职业者可以在其中为雇主完成工作。工作完成后,自由职业者可以上传文件供雇主审查。我认为自由职业者应该能够上传 zip 文件,但我不希望自由职业者能够上传无效或损坏的 zip 文件。有什么办法可以阻止这种情况或检查文件是否有效。我很确定是否有方法或函数可以做到这一点,它将在 rubyzip 库中,但我查看了他们的文档,找不到我要找的东西。
问问题
2009 次
2 回答
6
这是一个简单的解决方案,它尝试打开一个 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 校验和。如果您真的需要它超快,您可以从文件中读取它们并检查您计算的校验和。
于 2014-02-27T21:11:43.367 回答
-1
如果文件正在上传,另一种简单的方法是检查这种情况。
file = params[:file]
file.content_type.in?(['application/zip','application/x-zip-compressed'])
于 2019-07-01T07:02:50.883 回答