最近遇到一个『文件上传』的需求,要求从亚马逊的S3迁移为Azure Storage(微软的存储服务)。
废话不多,直接上示例(不过要注意一个问题,你的服务链接是在国内还是国外):
maven依赖:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-storage</artifactId>
<version>5.0.0</version>
</dependency>
java类:
package com.customerservicePES.AzureStorage;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.EnumSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.customerservicePES.utils.SystemConfigUtils;
import com.microsoft.azure.storage.CloudStorageAccount;
import com.microsoft.azure.storage.OperationContext;
import com.microsoft.azure.storage.StorageException;
import com.microsoft.azure.storage.blob.BlobContainerPermissions;
import com.microsoft.azure.storage.blob.BlobContainerPublicAccessType;
import com.microsoft.azure.storage.blob.BlobRequestOptions;
import com.microsoft.azure.storage.blob.CloudBlobClient;
import com.microsoft.azure.storage.blob.CloudBlobContainer;
import com.microsoft.azure.storage.blob.CloudBlockBlob;
import com.microsoft.azure.storage.blob.SharedAccessBlobPermissions;
import com.microsoft.azure.storage.blob.SharedAccessBlobPolicy;
/**
*
* @author zhangjiamei
*
*/
public class AzureStorageV7Util {
private static Logger logger = LoggerFactory.getLogger(AzureStorageV7Util.class);
/* *************************************************************************************************************************
* Instructions: Update the storageConnectionString variable with your AccountName and Key and then run the sample.
* *************************************************************************************************************************
*/
public static final String storageConnectionString =
"DefaultEndpointsProtocol=https;" +
"AccountName=%s;" +
"AccountKey=%s;EndpointSuffix=core.chinacloudapi.cn";
public static CloudStorageAccount storageAccount = null;
public static CloudBlobClient blobClient = null;
public static CloudBlobContainer container=null;
public static String uploadInputStreamToAzureStorage(InputStream inputStream, String fileNameALl)
{
String key = null;
File sourceFile = null;
try {
// Parse the connection string and create a blob client to interact with Blob storage
if(storageAccount == null){
storageAccount = CloudStorageAccount.parse(String.format(storageConnectionString, SystemConfigUtils.getAzureStorageAccountName(),SystemConfigUtils.getAzureStorageAccountKey()));
}else{
logger.info("storageAccount is not null!!!");
}
if(blobClient == null){
blobClient = storageAccount.createCloudBlobClient();
}else{
logger.info("blobClient is not null!!!");
}
if(container == null){
container = blobClient.getContainerReference(SystemConfigUtils.getAzureStoragecontainer());
}else{
logger.info("container is not null!!!");
}
// Create the container if it does not exist with public access.
logger.info(&