Rails에서 업로드된 zip 파일이 손상되었거나 유효하지 않은지 확인할 수 있나요?

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

문제

프리랜서가 고용주를 위해 작업을 완료할 수 있는 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

나는 ZIP 형식에 내용의 CRC32 체크섬이 포함되어 있다고 생각합니다.정말 빠른 속도가 필요하다면 파일에서 해당 내용을 읽어 계산한 체크섬과 대조해 볼 수 있습니다.

다른 팁

파일이 업로드되는 경우이 조건으로 확인하는 것이 또 다른 쉬운 방법입니다.

file = params[:file]

file.content_type.in?(['application/zip'])
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top