2012-08-02 6 views
5

Ich verwende derzeit Rails 3.2 mit dem Carrierwave-Juwel, um Dateien auf Amazon S3 hochzuladen. Jetzt muss ich in der Lage sein, von Benutzern gesendete Dateien mit mehr als 5 GB zu verarbeiten, während ich immer noch das Carrierwave-Juwel benutze. Gibt es noch andere Perlen oder Zweige von Carrierwave oder Fog, die die 5GB + Datei-Uploads zu S3 verarbeiten können?Wie kann ich Dateien, die größer als 5 GB sind, auf Amazon S3 hochladen?

Edit: Ich würde es vorziehen, eine komplette Rails-Upload-Lösung nicht neu schreiben zu müssen, so dass Links wie diese nicht helfen werden: https://gist.github.com/908875.

+0

Schauen Sie sich die s3_multipart Gem http://blog.bitcast.io/post/43001057745/direct-multipart-uploads-to-s3-in-rails – Zach

Antwort

6

Ich habe herausgefunden, wie man das macht und es jetzt funktioniert. In der richtigen config/environment Datei, fügen Sie folgende Dateien in 100MB Brocken auf Amazon S3 zu senden:

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

Da der Nebel Juwel (es für den Hinweis auf dank Veraticus) mehren Uploads eingebaut hat, Attribute die entsprechende Konfiguration einfach müssen über Carrierwave in Nebel übergehen. Beim Senden an S3 habe ich häufig Connection reset by peer (Errno::ECONNRESET) Fehler erhalten, daher müssen Teile des Uploads erneut versucht werden.

-2

Sie müssen Ihre Datei vor dem Hochladen in kleine Stücke zerlegen.

Werfen Sie einen Blick auf die folgenden:

http://www.ruby-forum.com/topic/1282369

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

So oder so, müssen Sie die Datei teilen.

+0

Ich muss dies automatisch vom Server mit Ruby/Rails-Code tun oder Edelsteine, nicht mit externen Programmen. – lee

+1

-1 Sie erwarten also, dass Lees Benutzer ein Befehlszeilen-Tool herunterladen, die große Datei in mehrere kleinere aufteilen und sie dann separat hochladen? Ich denke nicht, dass das eine Antwort auf die gestellte Frage ist (oder eine praktikable Lösung in irgendeiner Weise, egal). –

+0

@Ken & Lee, sorry Jungs, ich habe einen Fehler gemacht zu Ende zu springen. Jetzt bin ich gespannt auf die Antwort auf diese Frage. Ich recherchiere es und ich finde keinen Weg, dies zu erreichen. – Dayan

6

Sie möchten S3's multipart upload functionality verwenden. Hilfreicherweise kann Nebel tatsächlich mehrteilige S3-Uploads verarbeiten, wie Sie sehen können .

Leider scheint Carrierwave nicht die Funktionalität eingebaut zu haben, um es richtig zu benutzen. Sie müssen also entweder Carrierwave ändern oder manuell in Fog fallen, um diese Datei korrekt hochzuladen.

+1

Danke, ich hatte noch nie gesehen, dass die Fog-Funktionalität irgendwo dokumentiert ist. Ich werde versuchen, Carrierwave zu modifizieren, da alle meine Interaktionen mit S3 durch diesen Edelstein gemacht werden. – lee

Verwandte Themen