2014-05-05 4 views
8

मैं कई ऑब्जेक्ट्स के सामग्री प्रकार को सेट करने के लिए एडब्ल्यूएस एपी का उपयोग करने और उन्हें 'सामग्री-एन्कोडिंग: gzip' शीर्षलेख जोड़ने के लिए उपयोग करने का प्रयास कर रहा हूं।एसडीके के माध्यम से एस 3 ऑब्जेक्ट की सामग्री प्रकार कैसे सेट करें?

for (S3ObjectSummary summary : objs.getObjectSummaries()) 
    { 
     String key = summary.getKey(); 
     if (! key.endsWith(".gz")) 
      continue; 

     ObjectMetadata metadata = new ObjectMetadata(); 
     metadata.addUserMetadata("Content-Encoding", "gzip"); 
     metadata.addUserMetadata("Content-Type", "application/x-gzip"); 
     final CopyObjectRequest request = new CopyObjectRequest(bucket, key, bucket, key) 
       .withSourceBucketName(bucket) 
       .withSourceKey(key) 
       .withNewObjectMetadata(metadata); 

     s3.copyObject(request); 
    } 

जब मैं इस हालांकि चलाने के लिए, निम्न परिणाम है:: यहाँ है कि करने के लिए मेरे कोड है

screenshot

आप देख सकते हैं, उपसर्ग x-amz-meta अपने कस्टम हेडर को जोड़ा गया है, और वे कम cased थे। और content-type शीर्षलेख को अनदेखा कर दिया गया था, इसके बजाय इसे www/form-encoded शीर्षलेख के रूप में रखा गया था।

मैं अपने हेडर मानों को स्वीकार करने के लिए इसे क्या कर सकता हूं?

उत्तर

11

समस्या मिली। ObjectMetadata को addUserMetadata() के माध्यम से सामग्री-प्रकार/एन्कोडिंग को स्पष्ट रूप से सेट करने की आवश्यकता है। बदल रहा है निम्नलिखित:

metadata.addUserMetadata("Content-Encoding", "gzip"); 
    metadata.addUserMetadata("Content-Type", "application/x-gzip"); 

रहे हैं:

 metadata.setContentEncoding("gzip"); 
     metadata.setContentType("application/x-gzip"); 

इस तय की।

+0

aws जावा एंड्रॉइड एसडीके के लिए काम किया –

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