Railsでは、アップロードされたZIPファイルが破損しているか無効かどうかを確認できますか?
-
24-12-2019 - |
質問
私はフリーランサーが雇用主の仕事を完了できる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'])
. 所属していません StackOverflow