@Option(name = "-m", aliases = "--multipart-upload", description = "Use multi-part upload", required = false, multiValued = false)
boolean multipartUpload;
@Override
protected Object doExecute() throws Exception {
BlobStore blobStore = getBlobStore();
BlobBuilder builder = blobStore.blobBuilder(blobName);
if (stringPayload) {
builder = builder.payload(payload.getBytes()); // use default Charset
} else if (urlPayload) {
InputStream input = new URL(payload).openStream();
try {
builder = builder.payload(ByteStreams.toByteArray(input));
} finally {
input.close();
}
} else {
BlobBuilder.PayloadBlobBuilder payloadBuilder = builder.payload(new File(payload));
if (!multipartUpload) {
payloadBuilder = payloadBuilder.calculateMD5();
}
builder = payloadBuilder;
}
PutOptions options = multipartUpload ? new PutOptions().multipart(true) : PutOptions.NONE;
write(blobStore, containerName, blobName, builder.build(), options);
cacheProvider.getProviderCacheForType("container").put(blobStore.getContext().unwrap().getId(), containerName);
cacheProvider.getProviderCacheForType("blob").put(blobStore.getContext().unwrap().getId(), blobName);
return null;
}