2015-05-08 17 views
6

Tôi đã sử dụng đoạn mã từ Mã mẫu của Amazon. Đoạn mã dưới đây tải dữ liệu lên thùng amazon S3, nhưng tôi cần URL của tệp tải lên. Tôi có đi đúng hướng không? hoặc ai đó có thể cho tôi biết sai lầm tôi đang thực hiệnCách tải tệp lên Amazon S3 và nhận url theo cách sử dụng iOS

Bất kỳ hình thức trợ giúp nào cũng sẽ được đánh giá cao.

AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; 
    AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new]; 
    uploadRequest.bucket = S3BucketName; 
    uploadRequest.key = S3UploadKeyName; 
    uploadRequest.body = self.uploadFileURL; 
    //uploadRequest.contentLength = [NSNumber numberWithUnsignedLongLong:fileSize]; 

    [[transferManager upload:uploadRequest] continueWithBlock:^id(BFTask *task) { 
     // Do something with the response 
     AWSS3TransferManagerUploadOutput *uploadOutPut = task.result; 
     NSLog(@"bftask:%@",uploadOutPut); // Upload out put gives me the following response 
     return nil; 
    }]; 

bfTask đáp ứng:

bftask:<AWSS3TransferManagerUploadOutput: 0x1706606c0> { 
    ETag = "\"0aefedfa36b687a74025b1ad50f3101f\""; 
    serverSideEncryption = 0; 
} 

Trả lời

6

Nếu bạn chỉ cần tải về tập tin, bạn có thể sử dụng AWSS3TransferManagerDownloadRequest để tải về một tập tin bằng cách sử dụng SDK. Ngoài ra, bạn có thể sử dụng AWSS3PreSignedURLBuilder để tạo URL được ký trước để tải xuống tệp.

Nếu bạn chỉ muốn biết địa chỉ URL của đối tượng, các URL theo mẫu sau:

https://<YourS3Endpoint>/<YourBucketName>/<YourObjectKeyName> 

Bất kỳ đối tượng trong Amazon S3 là tin theo mặc định và không công khai có thể đọc được. Nếu bạn muốn đặt nó ở chế độ có thể đọc công khai, bạn cần đặt ACL trên đối tượng AWSS3TransferManagerUploadRequest của mình.

Xem Amazon S3 Bucket Public Access Considerations để biết thêm chi tiết.

+7

Thật ấn tượng khi SDK AWS tồi tệ đến mức nào và tài liệu của họ xấu đến mức nào. Và đối tượng kết quả KHÔNG có ích, nó thậm chí không cung cấp cho bạn URL cuối cùng. Có lẽ Amazon lái xe các nhà phát triển của họ như nhân viên lựa chọn của họ, và họ đang quá bận rộn suy nghĩ về tự tử để tạo ra khuôn khổ hữu ích. – theLastNightTrain

+2

@ theLastNightTrain - Đồng ý, nó thành thật pisses tôi đi. Hơn nữa, tất cả các tài liệu được hết tháng và không có ví dụ nào có liên quan nữa. Họ cũng không phản đối mọi thứ, họ chỉ xóa toàn bộ các lớp sẽ phá vỡ mã của mọi người khi họ chạy cập nhật nhóm. Càng cố gắng làm việc với SDK di động AWS thì tôi càng nghĩ rằng đó là một trò đùa tàn nhẫn đối với các nhà phát triển thực sự đang cố gắng làm việc với nó. –

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