我有一个Ruby应用程序,自由职业者可以为雇主完成工作。当工作完成时,自由职业者可以上传文件供雇主审核。我认为自由职业者应该能够上传zip文件,但是我不希望他们能够上传无效或损坏的zip文件。是否有任何方法来阻止这种情况或检查文件是否有效?我相信如果有一个方法或函数可以做到这一点,它就会在RubyZip库中,但我已经查看了他们的文档,没有找到我要找的内容。
我有一个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
另一种简单的方法是只需检查此条件,如果文件正在上传。
file = params[:file]
file.content_type.in?(['application/zip','application/x-zip-compressed'])
application/x-zip-compressed
。 - Undo