0

파일이 여러 개 있고 폴더에 파일이 그룹화되어 있습니다. 폴더에있는 모든 파일을 다운로드하는 대량 다운로드 버튼이 있습니다. 버튼을 클릭하여 다운로드하면이 메소드가 실행됩니다.레일 Carrierwave 결합 다운로드 가능한 Zip 파일로 업로드

def download_multiple 
    @odocument = Odocument.find(params[:id]) 
    @files = Redocument.find(:all, :conditions => {:odocument_id => @odocument.id}) 
    t = Tempfile.new('tmp-zip-' + request.remote_ip) 
    Zip::ZipOutputStream.open(t.path) do |zos| 
     @files.each do |file| 
     zos.put_next_entry(File.basename(file.redocument.url)) 
     zos.print IO.read(file.redocument.url) 
     end 
    end 
    filename = @odocument.document_name + ".zip" 
    t.close  

    send_file t.path, :type => "application/zip", :filename => filename  
    end 

이렇게하면 ZIP 파일이 다운로드되고 만들어지며 WinRAR 또는 7Zip을 사용하면 파일이 추출되어 성공적으로 열거 나 편집 할 수 있습니다. 그러나 Windows XP/Vista/7 내부 zip 추출기를 사용하는 경우 지정되지 않은 오류 0x80004005가 생성됩니다.

WinRAR 또는 7Zip을 사용하여 파일을 다운로드하고 열 수 있음에도 불구하고 실제로이 방법을 효과적인 해결책으로 생각하지 않습니다. 어떻게하면 Windows에서 제공되는 것 외에 압축 소프트웨어 없이도 Windows에서 ZIP 파일을 열 수 있도록 download_multiple 메서드를 어떻게 변경할 수 있습니까?

답변

0

최근 보석 업데이트로이 문제가 해결되었습니다.

관련 문제