2013-02-05 52 views
5

Tôi đang cố gắng tải tệp lên thùng Amazon S3 bằng SDK AWS.Tải tệp lên S3 bằng AWS SDK

class LogToS3Bucket extends Thread{ 

    public void run() { 
     super.run(); 
     Gdx.app.log("msg", "secondThreadRunning yeahhhhh!"); 
     File fileToPut = new File("../../../MyProject", "settings.txt"); 
     String accessKey = "<accessKey>"; 
     String secretKey = "<secretKey>"; 
     AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); 
     AmazonS3 conn = new AmazonS3Client(credentials); 

     conn.putObject("bucketname", "filename.txt", fileToPut); 
    } 

} 

Nó không làm việc, mặc dù nó ném một lỗi trên các cuộc gọi đến .putObject()

Exception in thread "Thread-1" Status Code: 400, AWS Service: Amazon S3, AWS Error Code: BadDigest, AWS Error Message: The Content-MD5 you specified did not match what we received. 
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:614) 
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:312) 
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:165) 
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2951) 
    at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1123) 
    at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:979) 
    at com.myproject.LogToS3Bucket.run(LogToS3Bucket.java:22) 
+0

bạn đã thử với mẫu mà họ đã cung cấp với SDK Android AWS chưa? – itsrajesh4uguys

+0

Vâng, đó là mã ví dụ. Nó không hoạt động từ điện thoại của tôi. Tôi nghĩ bạn phải sử dụng sdk android cho một thiết bị Android. Đó là một chút khó chịu vì tôi cần một giải pháp đa nền tảng. – kelorek

Trả lời

5

I figured it out Tôi think-- từ ứng dụng của tôi không ngừng chỉnh sửa tập tin đó và đoạn mã này xảy ra trong một chuỗi riêng biệt, tệp thực sự bị thay đổi trước khi được tải lên ... Nếu tôi tạo một bản sao tạm thời của tệp và tải lên tệp đó, nó sẽ hoạt động.

+0

bản sao tạm thời ?? bạn có thể giải thích thêm một chút không? –

+0

Tạo một bản sao sâu của tệp (chụp nhanh dữ liệu tệp trong bộ nhớ hoặc bằng cách tạo bản sao trên hệ thống tệp) để bạn không ghi vào bản tải lên giữa video. Bạn cũng có thể sử dụng một số cơ chế khóa để tiếp tục tải lên và ghi tập tin riêng biệt. – kelorek

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