2013-02-05 18 views
5

का उपयोग कर एस 3 पर एक फ़ाइल अपलोड करें मैं एडब्ल्यूएस एसडीके का उपयोग कर एक अमेज़ॅन एस 3 बाल्टी में एक फाइल अपलोड करने की कोशिश कर रहा हूं।एडब्ल्यूएस एसडीके

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); 
    } 

} 

हालांकि यह काम नहीं करता है, यह .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

क्या आपने एडब्ल्यूएस एंड्रॉइड एसडीके के साथ प्रदान किए गए नमूने के साथ प्रयास किया था? – itsrajesh4uguys

+0

हाँ यह उदाहरण कोड है। हालांकि यह मेरे फोन से काम नहीं करता है। मुझे लगता है कि आपको एंड्रॉइड डिवाइस के लिए एंड्रॉइड एसडीके का उपयोग करना होगा। यह थोड़ा परेशान है क्योंकि मुझे एक क्रॉस-प्लेटफ़ॉर्म समाधान की आवश्यकता है। – kelorek

उत्तर

5

मैं इसे समझ से बाहर मैं think-- अपने आवेदन लगातार उस फ़ाइल को संपादित कर रहा के बाद से करने के लिए कॉल पर एक त्रुटि फेंकता है और यह स्निपेट एक अलग थ्रेड में होता है, फ़ाइल अपलोड होने से पहले वास्तव में बदल जाती है ... अगर मैं फ़ाइल की एक अस्थायी प्रतिलिपि बनाता हूं और बाल्टी को अपलोड करता हूं, तो यह काम करता है।

+0

अस्थायी प्रतिलिपि ?? क्या आप थोड़ा और समझा सकते हैं? –

+0

फ़ाइल की एक गहरी प्रति बनाएं (फ़ाइल डेटा का स्नैपशॉट या तो मेमोरी में या फाइल सिस्टम पर प्रतिलिपि बनाकर) ताकि आप इसे मध्य-अपलोड पर लिख न सकें। अपलोड करने और फ़ाइल लिखने को अलग रखने के लिए आप वैकल्पिक रूप से कुछ लॉकिंग तंत्र का उपयोग कर सकते हैं। – kelorek

संबंधित मुद्दे