2009-06-04 3 views
3

내 Rails 응용 프로그램에 업로드 한 ZIP 파일 내의 파일을 추출하고 싶습니다. ZIP 파일 내의 파일은 데이터베이스에 저장됩니다.rubyzip을 사용하여 다중 파트/form-data ZIP 파일 열기

먼저 파일을 폴더에 저장하지 않고도 내 작업에서 ZIP 파일을 열려고합니다. rubyzip을 사용하여 multipart/form-data 스트림을 열고 싶습니다.

rubyzip의 ZipFile.open은 IO 스트림이 아닌 파일 이름 만 사용합니다. 무엇

나는 이런 식으로, 나를 스트림으로 압축 파일을 열 수 있도록, rubyzip 내에서 변경해야

Zip::ZipFile.open(params["zip_file"]) do |zip_file| 
... 
end 

감사합니다. Joerg

답변

4

.

4

나는 당신에게 요청하지 않은 조언을 드릴 것입니다.

추출 작업을 수행하는 동안 해당 HTTP 요청과 관련된 Rails 프로세스를 차단하므로 작업 중에는이 작업을 수행하지 말 것을 강력히 권장합니다. 해당 사용자의 UI가 응답하지 않게되고 충분한 사용자가 동시에 (파일 업로드 크기를 제한하고있는 경우) 올바르게 수행하면 응용 프로그램에 대해 Denial of Service 공격이 발생하게됩니다.

  • 작업 내에서 비동기 백그라운드 작업으로 추출을 시작하십시오.

    Zip::ZipFile.open(params["zip_file"].path) do |zip_file| 
    ... 
    end 
    

    작동합니다 사용

+1

예 일반적으로 비동기 적으로 수행하지만이 경우 파일을 먼저 저장할 수 없습니다. 그것은 소수의 사람들 만이 접근 할 수있는 내부 시스템입니다. 그래도 고마워. – Joerg

관련 문제