2013-09-05 27 views
3

我正在使用Rackspace的Cloud Files产品,并且我已经成功地将文件放入我的容器,但是,在测试期间,我发现文件没有设置Content-Type。如何为Rackspace Cloud文件上的对象设置内容类型?

对于如何使用Java SDK设置内容类型的示例,我已经看到了高低,但没有运气。

我曾尝试:

Map<String, String> metaData = new HashMap<String, String>(); 
metaData.put("mime-type", content_type); 
// or metaData.put("Content-Type", content_type); 

Blob blob = storage.blobBuilder(file.getName()) 
    .payload(file).userMetadata(metaData).build(); 

storage.putBlob(container, blob); 

任何帮助,将不胜感激。

回答

1

解决了! 问题在于它不是元数据,并且BlobBuilder.PayloadBlobBuilder有一个名为contentType的方法,您可以在其中设置字符串值。

Blob blob = storage.blobBuilder(file.getName()) 
    .payload(file).contentType(content_type).build(); 
storage.putBlob(container, blob); 
1

CloudFiles实际上会为您设置内容类型,因此您的代码中不需要猜测内容类型。诀窍是确保jclouds不发送任何内容类型。

Blob blob = storage.blobBuilder(filename) 
    .payload(file) 
    .contentType("") // allows Cloud Files to determine the content type 
    .build(); 
相关问题