2012-08-02 3 views
5

현재 Carrierswave gem에서 Rails 3.2를 사용하여 Amazon S3에 파일을 업로드하고 있습니다. 이제 Carrierwave gem을 사용하면서 5GB보다 큰 사용자 제출 파일을 처리 할 수 ​​있어야합니다. S3에 5GB + 파일 업로드를 처리 할 수있는 Carrierwave 또는 Fog의 다른 보석 또는 지점이 있습니까?5GB가 넘는 파일을 Amazon S3에 업로드하려면 어떻게해야합니까?

편집 : 완전한 Rails 업로드 솔루션을 다시 작성하지 않아도되므로이 링크는 도움이되지 않습니다 : https://gist.github.com/908875.

+0

s3_multipart 보석을 확인하십시오. http://blog.bitcast.io/post/43001057745/direct-multipart-uploads-to-s3-in-rails – Zach

답변

6

나는 이것을 어떻게하는지 지금 생각 해냈다. 안개 보석은 (그것을 지적 Veraticus 덕분에) 내장 멀티 업로드를 가지고 있기 때문에

CarrierWave.configure do |config| 
    config.fog_attributes = { :multipart_chunk_size => 104857600 } 
end 

, 적절한 구성은 속성 : 적절한 config/environment 파일에서 아마존 S3에 메가 바이트 청크로 파일을 전송하려면 다음을 추가 Carrierwave를 통해 안개 속으로 전달되어야합니다. S3로 전송할 때 자주 Connection reset by peer (Errno::ECONNRESET) 오류가 발생하므로 업로드 부분을 다시 시도해야 할 수 있습니다.

-2

업로드하기 전에 파일을 작은 조각으로 나누어야합니다.

은 다음에서 살펴 보자 : http://www.ruby-forum.com/topic/1282369

http://joemiller.me/2011/02/18/client-support-for-amazon-s3-multipart-uploads-files-5gb/

어느 쪽이든, 당신은 파일을 분할 할 필요가있다.

+0

Ruby/Rails 코드로 서버에서 자동으로 처리해야합니다. 또는 보석, 외부 프로그램을 사용하지 않습니다. – lee

+1

-1 그래서이 사용자가 명령 줄 도구를 다운로드하고 큰 파일을 몇 개의 작은 파일로 분할 한 다음 개별적으로 업로드하겠습니까? 질문에 대한 답변 (또는 어떤 방식 으로든 실행 가능한 솔루션)과 관련이 있다고 생각하지 않습니다. –

+0

@Ken & Lee, 죄송합니다. 나는 결론에 도달하는 실수를 저질렀습니다. 이제이 질문에 대한 답을보기를 간절히 바란다. 나는 그것을 연구하고있어이 일을 성취 할 수있는 방법을 찾을 수 없다. – Dayan

6

S3's multipart upload functionality을 사용하려고합니다. 유익하게도 Fog는 멀티 파트 S3 업로드를 처리 할 수 ​​있습니다 (in this pull request 참조).

불행히도 Carrierwave는 올바르게 사용하기 위해 내장 된 기능을 갖고 있지 않습니다. 따라서이 파일을 올바르게 업로드하려면 Carrierwave를 수정하거나 수동으로 Fog로 가져와야합니다.

+1

감사합니다. 어디서나 문서화 된 안개 기능을 보지 못했습니다. S3와의 모든 상호 작용이 그 보석을 통해 이루어지기 때문에 Carrierwave를 수정하려고 노력할 것입니다. – lee

관련 문제