Railsでは、アップロードされたZIPファイルが破損しているか無効かどうかを確認できますか?

StackOverflow https://stackoverflow.com//questions/22079749

質問

私はフリーランサーが雇用主の仕事を完了できるRubyアプリを持っています。ジョブが完了すると、フリーランサーは雇用者が確認するためのファイルをアップロードできます。フリーランサーはZIPファイルをアップロードできるはずだと思いますが、Freelancerが無効または破損した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