2013-03-07 29 views

Trả lời

1

Đây là câu hỏi hay. Rất tiếc, tôi không thấy triển khai thực sự để tải lên các tệp lớn tùy ý. Vì vậy, từ những gì tôi thấy có nhiều công việc hơn để làm trên Python SDK, trừ khi tôi thiếu một cái gì đó thực sự quan trọng.

Mã mẫu được cung cấp trong tài liệu thực sự chỉ sử dụng một tệp văn bản và tải lên cùng một lúc. Không có mã thực nào chưa được triển khai (từ những gì tôi thấy trong số SDK Source code) để hỗ trợ tải lên các tệp lớn hơn.

Vì vậy, để bạn, làm việc với Blobs từ Python, bạn cần hiểu cách Azure Blob Storage hoạt động. Start here.

Sau đó, xem nhanh tài liệu REST API cho PutBlob operation. Nó được đề cập trong các nhận xét:

Kích thước tải lên tối đa cho khối màu là 64 MB. Nếu blob của bạn là lớn hơn 64 MB, bạn phải tải nó lên thành một tập hợp các khối. Để biết thêm thông tin , hãy xem các khối Đặt khối (REST API) và Đặt khối danh sách (REST API). Không cần thiết phải gọi cho Put Blob nếu bạn tải lên các đốm màu như một tập hợp các khối.

Tin vui là PutBlock và PutBlockList được triển khai trong SDK Python, nhưng không có mẫu nào được cung cấp để sử dụng. Những gì bạn phải làm là chia thủ công tệp của bạn thành các khối (khối) tối đa 4 MB mỗi tệp. và sau đó sử dụng chức năng put_block(self, container_name, blob_name, block, blockid, content_md5=None, x_ms_lease_id=None): từ SDK python để tải lên các khối. Cuối cùng, bạn sẽ tải lên các khối song song. Tuy nhiên, đừng quên rằng bạn phải thực thi put_block_list(self, container_name, blob_name, block_list, content_md5=None, x_ms_blob_cache_control=None... ở cuối để thực hiện tất cả các khối được tải lên.

Rất tiếc, tôi không phải là chuyên gia về Python để trợ giúp bạn thêm nữa, nhưng ít nhất tôi cung cấp cho bạn bức tranh đẹp về tình hình.

3

Tôi đã gặp sự cố tương tự cách đây vài ngày và đủ may mắn để tìm thấy this. Nó chia nhỏ tệp thành nhiều phần và tải nó lên cho bạn.

Tôi hy vọng điều này sẽ hữu ích. Chúc mừng!

2

Tôi không phải là lập trình viên Python. Nhưng một vài mẹo bổ sung mà tôi có thể cung cấp (công cụ của tôi là tất cả trong C):

Sử dụng các thao tác HTTP PUT (tùy chọn comp = block) cho nhiều khối (4MB mỗi) theo yêu cầu cho tệp của bạn và sau đó sử dụng Danh sách khối PUT (tùy chọn comp = blocklist) kết hợp các khối. Nếu việc tải lên Chặn của bạn không thành công hoặc bạn cần hủy, dọn dẹp xóa một phần khối đã tải lên trước đó là lệnh DELETE cho tệp bạn đang tìm kiếm, nhưng điều này xuất hiện chỉ được hỗ trợ bởi phiên bản 2013-08-15 (Ai đó từ hỗ trợ Azure nên xác nhận điều này).

Nếu bạn cần thêm thông tin Meta, thao tác PUT bổ sung (với tiền tố comp = metadata) là những gì tôi làm khi sử dụng phương pháp Chặn danh sách. Có thể có cách hiệu quả hơn để gắn thẻ thông tin meta mà không yêu cầu thêm PUT, nhưng tôi không biết về nó.

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