3

フリーランサーが雇用主の仕事を完了することができる Ruby アプリがあります。仕事が完了すると、フリーランサーはファイルをアップロードして、雇用主がレビューできるようにします。フリーランサーは zip ファイルをアップロードできるはずですが、フリーランサーが無効または破損した zip ファイルをアップロードできるようにしたくありません。これを停止する方法や、ファイルが有効かどうかを確認する方法はありますか。これを行うためのメソッドまたは関数があるかどうかはかなり確信していますが、それは ruby​​zip ライブラリにありますが、ドキュメントを調べたところ、探しているものが見つかりません。

4

2 に答える 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 に答える