在Rails中,我可以检查上传的zip文件是否已损坏或无效?
-
24-12-2019 - |
题
我有一个Ruby应用程序,自由职业者可以为雇主完成工作。当工作完成后,自由职业者可以向雇主上传文件进行审核。我认为自由职业者应该能够上传zip文件,但我不希望自由职业者能够上传无效或腐败的zip文件。是否有任何方法来停止此问题或检查文件是否有效。我很确定是否有一个方法或函数来执行此操作,它将在Rubyzip库中,但我通过他们的文档看,找不到我正在寻找的东西。
解决方案
此处是一个天真的解决方案,它试图打开zip存档,如果它运行并且如果发生错误,则会尝试生成的true
:
require 'zip'
def valid_zip?(file)
zip = Zip::File.open(file)
true
rescue StandardError
false
ensure
zip.close if zip
end
.
我相信zip格式包括其内容的CRC32校验和。如果您真的需要它超级快速,您可以读取文件中的那些,并检查您计算的校验和。
其他提示
另一个简单的方法是只需检查此条件,如果上传文件。
file = params[:file]
file.content_type.in?(['application/zip'])
. 不隶属于 StackOverflow