以下代码段将文件上传到对象存储区没有任何问题
public void uploadObjectFromStream(String container, String name, InputStream stream) {
SwiftApi swiftApi = getApi();
createContainerIfAbsent(container, swiftApi);
ObjectApi objectApi = swiftApi.getObjectApiForRegionAndContainer(REGION, container);
Payload payload = new InputStreamPayload(stream);
objectApi.put(name, payload, PutOptions.Builder.metadata(ImmutableMap.of("X-Object-Meta-key1", "value3", "X-Object-Meta-key2", "test"))); // test
}
如果我尝试上传〜10Mb文件,我会收到错误
o.j.h.i.HttpWire [SLF4JLogger.java:56] over limit 10485760/262144: wrote temp file
java.lang.OutOfMemoryError: Java heap space
问题是我是否可以将对象从输入流上传到对象存储而不将流保存在应用程序内存或文件系统中。
答案 0 :(得分:0)
除非启用线路记录,否则jclouds不会缓冲InputStream
。通常,除非您正在调试问题,否则应禁用此功能。