基本上我有这样的代码,它使用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上传时,这完全不需要手动设置任何内容。
最终通过挖掘源代码找到了它——这很有效:
FilePayload payload = new FilePayload(uploadableFile.localPath.toFile());
payload.getContentMetadata().setContentType(uploadableFile.contentType);
obj.setPayload(payload);
如果有其他人正在寻找这个在未来,张贴问答;A.