我有一个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'])
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top