2013-08-06 36 views

Trả lời

11

Vâng, nhưng bạn sẽ cần một số loại máy chủ backend để xử lý các phím Amazon API trong một cách an toàn hơn nếu bạn đang đi để làm cho nó một phần của một trang web cộng đồng.

Bạn có thể tìm thấy những gì trông giống như một ví dụ thực hiện đầy đủ những điều này các dự án này:

Xin lưu ý rằng tôi chưa sử dụng, kiểm tra hoặc đánh giá các dự án này.

Một bản mô tả sơ bộ trình tự như sau:

  1. tài
    • tải trang web
    • chọn tập tin để tải lên
    • hits nút upload
  2. trang web
    • gửi thông tin về tập tin đến máy chủ
  3. server
    • tạo upload nhiều phần dữ liệu với Amazon API
    • gửi "chìa khóa" (filename) và "tải lên id" trở lại trang web
  4. trang web
    • tính toán kích thước của các bộ phận
    • yêu cầu Máy chủ ký một phần thông qua "khóa", "id tải lên", thông tin một phần
  5. server
    • ký yêu cầu phần, gửi "url tải lên một phần", "ngày" và "tiêu đề auth"
  6. trang web
    • gửi dữ liệu phần trực tiếp đến Amazon S3 qua "url tải lên một phần" bằng cách sử dụng "ngày" và "tiêu đề xác thực"
    • theo dõi các id phần
  7. server & Trang web
    • lặp đi lặp lại 5 & 6 cho từng phần bổ sung, khôi phục nếu được yêu cầu
  8. trang web
    • làm cho "upload hoàn thành" yêu cầu đến máy chủ (thông qua tất cả các thông tin phần)
  9. Máy chủ
    • yêu cầu API Amazon hoàn tất e tạo ra các tập tin
  10. trang web
    • thông báo cho người dùng về lỗi hay thành công

Ghi chú:

  • Nếu upload được hủy bỏ, điều này cũng phải bị xử lý phía máy chủ nếu không, các phần/tải lên bắt đầu sẽ được để lại để chiếm dung lượng trong Thùng S3.
  • Có thể mất vài phút để hoàn tất yêu cầu "tải lên hoàn tất" lên Amazon.
+0

Cảm ơn bạn đã trả lời chi tiết! Tôi đã thực sự bắt đầu triển khai giao thức mà bạn đã chi tiết trước đây, nhưng chưa thực sự hoàn thành nó: https://github.com/keichan34/s3uploader/tree/2.0-wip –

+1

Tuyệt vời, tôi đã nhận thấy bạn sử dụng Ruby trong dự án của bạn và cũng tìm thấy một dự án Ruby khác mà tôi đã thêm vào câu trả lời để bạn tham khảo. –

+0

Đây là một ví dụ khác trong PHP [https://github.com/ienzam/s3-multipart-upload-browser](https://github.com/ienzam/s3-multipart-upload-browser) – BausTheBig

Các vấn đề liên quan