2009-08-11 9 views
5

Also, ich benutze Paperclip und AWS-S3, was genial ist. Und es funktioniert großartig. Nur ein Problem: Ich muss wirklich große Dateien hochladen. Wie in über 50 Megabyte. Und so stirbt nginx. Also speichert Paperclip die Dinge anscheinend auf der Festplatte, bevor es zu S3 geht?Büroklammer, große Datei-Uploads und AWS

Ich fand diese really cool article, aber es scheint auch zuerst auf die Festplatte gehen und dann alles andere im Hintergrund zu tun.

Idealerweise könnte ich die Datei im Hintergrund hochladen ... Ich habe eine kleine Menge Erfahrung mit PHP, aber noch nichts mit Rails. Könnte mich jemand in eine allgemeine Richtung weisen?

Antwort

5

Vielleicht müssen Sie das Timeout in den ngix configs erhöhen?

1

Sie könnten hier in meinem Beitrag interessieren:

http://www.railstoolkit.com/posts/fancyupload-amazon-s3-uploader-with-paperclip

Es geht um mehrere Hochladen von Dateien (mit Fortschrittsbalken, gleichzeitig) direkt auf S3, ohne den Server zu schlagen.

+0

Danke für den Link! Das einzige Problem, das ich damit sehen kann, ist, dass FancyUpload in Flash ist, und Flash muss die gesamte Datei in den Speicher laden, bevor der Upload gestartet wird. Wenn ich also eine 300MB-Datei hochladen möchte, muss ich so viel RAM haben ... die Flash-Uploader, die ich getestet habe, haben meinen Firefox zum Absturz gebracht, und ich habe 4GB in meinem Rechner. Aber der Artikel ist immer noch interessant, und ich werde sicher sein, später darauf zu verweisen ... –

+0

Oh, das ist in der Tat ein Nachteil! Ich wusste nichts davon. –

+2

Der Kommentar, dass Flash die gesamte Datei vor dem Hochladen in den Speicher lädt, ist nicht mehr erfüllt. Sie haben es so geändert, dass es nur das puffert, was es jetzt benötigt – iwasrobbed

5

Sie können den Server vollständig umgehen und direkt zu S3 hochladen, wodurch die Zeitüberschreitung verhindert wird. Das gleiche passiert auf Heroku. Wenn Sie Rails verwenden 3, bitte meine Beispielprojekte finden Sie unter:

Beispielprojekt mit Rails 3, Flash und MooTools-basierte FancyUploader hochladen direkt auf S3: https://github.com/iwasrobbed/Rails3-S3-Uploader-FancyUploader

Beispielprojekt mit Rails 3, Flash/Silverlight/GoogleGears/Browserplus und jQuery-basierte Plupload direkt auf S3 laden: https://github.com/iwasrobbed/Rails3-S3-Uploader-Plupload

By the way, können Sie mit Paperclip mit so etwas wie dieser Blog-Post Nachbearbeitung tun (das Nico schrieb) beschreibt:

http://www.railstoolkit.com/posts/fancyupload-amazon-s3-uploader-with-paperclip

0

Ich hatte ein ähnliches Problem, aber mit der Verwendung von Büroklammer, Passagier und Apache.
Wie nginx hat Apache eine Timeout-Direktive in Apache, die ich erhöht habe, um mein Problem zu lösen.

Es gibt auch eine interessante Sache, die Passagiere beim Hochladen großer Dateien tun.
Alles über 8k wird nach/tmp/passagier geschrieben. und wenn Apache keine Berechtigungen hat, um dort zu schreiben, erhalten Sie auch 500 Fehler.

Hier ist der Artikel.
http://tinyw.in/fwVB