使用 Jclouds 上传时,Rackspace 云文件将“应用程序/未知”作为 mime 类型返回

Posted

技术标签:

【中文标题】使用 Jclouds 上传时,Rackspace 云文件将“应用程序/未知”作为 mime 类型返回【英文标题】:Rackspace cloud files return "application/unknown" as mime-type when uploaded with Jclouds 【发布时间】:2013-12-19 17:02:47 【问题描述】:

基本上我有这段代码,它使用Jclouds将javascript和其他内容上传到Rackspace:

SwiftObject obj = cloudFilesClient.newSwiftObject();
obj.getInfo().setName(name);
obj.getInfo().setContentType(contentType);
obj.setPayload(payloadFile);
cloudFilesClient.putObject(container, obj);

我注意到 Chrome 抱怨使用 text/plain 传输脚本,因此开始进行调查。 curl -I 改为报告:Content-Type: application/unknown

我用谷歌搜索了很多,试图找到一些线索,我试过了:

根本没有设置内容类型 设置空字符串(在某处发现了一些关于此的谣言) 设置为application/javascript(正确) 设置为text/javascript(错误,但很常见) obj.getAllHeaders().put("Content-Type", contentType);

当我们以前使用基本 HTTP 上传时,这完全不需要手动设置任何东西。

【问题讨论】:

【参考方案1】:

最后终于设法通过挖掘源代码来解决这个问题 - 这很有效:

FilePayload payload = new FilePayload(uploadableFile.localPath.toFile());
payload.getContentMetadata().setContentType(uploadableFile.contentType);
obj.setPayload(payload);

如果其他人在未来寻找这个,发布问答。

【讨论】:

您是否有可以修复此问题的 JClouds 工作版本或如何修复我的版本的示例。谢谢。 @Josh 答案中的那个例子在我写这篇文章时对我有用。稍后,我们出于其他原因放弃了 Rackspace,所以我不再参与其中。对不起!

以上是关于使用 Jclouds 上传时,Rackspace 云文件将“应用程序/未知”作为 mime 类型返回的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Clojure 使用 JClouds 和 Rackspace 启用 CDN?

从 jclouds 1.5 迁移到 1.7 后 rackspace cloudfiles 抛出 ContainerNotFoundException

在 Spring Boot 应用程序中使用 Rackspace 时出现 Apache jclouds java.lang.NoSuchMethodError

jclouds:如何更新现有 blob 的元数据?

JClouds S3:上传文件时指定内容长度

OpenStack Swift 多部分上传 jclouds