2009-08-11 12 views
5

Vì vậy, tôi đang sử dụng Paperclip và AWS-S3, điều này thật tuyệt vời. Và nó hoạt động rất tốt. Chỉ là một vấn đề, mặc dù: Tôi cần tải lên các tệp thực sự lớn. Như trong hơn 50 MB. Và như vậy, nginx chết. Vì vậy, dường như Paperclip lưu trữ mọi thứ vào đĩa trước khi đến S3?Kẹp giấy, tệp tải lên lớn và AWS

Tôi đã tìm thấy điều này really cool article, nhưng nó cũng dường như sẽ chuyển sang đĩa trước, sau đó thực hiện mọi thứ khác trong nền.

Lý tưởng nhất, tôi có thể tải tệp lên dưới nền ... Tôi có một lượng nhỏ kinh nghiệm làm việc này với PHP, nhưng không có gì với Rails. Bất cứ ai có thể chỉ cho tôi một hướng chung, thậm chí?

Trả lời

5

Có thể bạn phải tăng thời gian chờ trong cấu hình ngix?

1

Bạn có thể quan tâm trong bài viết của tôi ở đây:

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

của nó về cách tải lên nhiều file (với thanh tiến độ, đồng thời) trực tiếp đến S3 mà không va vào máy chủ.

+0

Cảm ơn bạn đã liên kết! Vấn đề duy nhất mà tôi có thể thấy với điều này là FancyUpload có trong Flash và flash phải tải toàn bộ tệp vào bộ nhớ trước khi bắt đầu tải lên. Vì vậy, nếu tôi muốn tải lên một tập tin 300MB, tôi phải có nhiều RAM ... những người tải lên flash tôi đã thử nghiệm tất cả đã làm cho Firefox của tôi sụp đổ, và tôi có 4GB trong máy của tôi. Tuy nhiên, bài viết vẫn còn thú vị, và tôi sẽ chắc chắn để tham khảo nó sau này ... –

+0

Oh, thats thực sự là một bất lợi! Tôi không biết về điều đó. –

+2

Nhận xét về Flash tải toàn bộ tệp vào bộ nhớ trước khi tải lên không còn đúng nữa. Họ đã thay đổi nó thành nơi nó chỉ đệm những gì nó cần bây giờ – iwasrobbed

5

Bạn có thể bỏ qua hoàn toàn máy chủ và tải trực tiếp lên S3 để ngăn thời gian chờ. Điều tương tự cũng xảy ra trên Heroku. Nếu bạn đang sử dụng Rails 3, xin vui lòng kiểm tra các dự án mẫu của tôi:

dự án mẫu sử dụng Rails 3, Flash và FancyUploader MooTools dựa vào tải trực tiếp lên S3: https://github.com/iwasrobbed/Rails3-S3-Uploader-FancyUploader

dự án mẫu sử dụng Rails 3, Flash/Silverlight/GoogleGears/BrowserPlus và jQuery dựa trên Plupload để tải trực tiếp lên S3: https://github.com/iwasrobbed/Rails3-S3-Uploader-Plupload

bằng cách này, bạn có thể làm sau xử lý với Kẹp giấy sử dụng một cái gì đó giống như bài viết trên blog này (mà Nico đã viết) mô tả:

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

0

Tôi đã gặp sự cố tương tự nhưng với việc sử dụng kẹp giấy, hành khách và apache.
Giống như nginx, apache có một chỉ thị Thời gian chờ trong apache mà tôi đã tăng để giải quyết vấn đề của mình.

Ngoài ra, có một hành khách thú vị khi tải các tệp lớn lên.
Bất kỳ thứ gì trên 8k được ghi vào/tmp/hành khách. và nếu apache không có quyền để viết ở đó bạn nhận được 500 lỗi cũng.

Đây là bài viết.
http://tinyw.in/fwVB