如何使用java代码将文件从Internet上传到Azure存储作为blob?

时间:2017-07-28 08:01:07

标签: java azure azure-storage azure-storage-blobs

我想直接从互联网上传文件到" mycontainer"中的Azure blob存储。 ,我不想先在本地上传下载文件。 我想使用java代码执行此操作,任何人都可以帮我提供示例代码。

2 个答案:

答案 0 :(得分:1)

根据我的理解,我认为您希望直接将文件从Internet网址上传到Azure Blob存储。您可以使用CloudBlob.startCopy(URI source)方法来实现您的需求。

这是我的示例代码。

String connectionString = String.format("DefaultEndpointsProtocol=http;AccountName=%s;AccountKey=%s", ACCOUNT_NAME, ACCOUNT_KEY);
CloudStorageAccount account = CloudStorageAccount.parse(connectionString);
CloudBlobClient client = account.createCloudBlobClient();
CloudBlobContainer container = client.getContainerReference("mycontainer");
CloudBlockBlob blob = container.getBlockBlobReference("bing.txt");

String uri = "http://www.bing.com";
blob.startCopy(new URI(uri));

希望它有所帮助。

答案 1 :(得分:0)

您必须在项目中添加此Maven依赖项。

 <dependency>
 <groupId>com.azure</groupId>
 <artifactId>azure-storage-blob</artifactId>
 <version>12.0.0</version>
 </dependency>

并添加以下导入。

import com.azure.storage.blob.BlobClient;
import com.azure.storage.blob.BlobContainerClient;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;
import com.azure.storage.blob.specialized.BlockBlobClient;

您可以使用以下代码将新文件上传到容器。

BlobClient blobClient = null;

try {
  String mConnectionstring = "DefaultEndpointsProtocol=https;AccountName=
         mystorageaccount;AccountKey
         =6xjXi/dA==;EndpointSuffix=core.windows.net";

// Create a BlobServiceClient object which will be used to create a container
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(mConnectionstring)
.buildClient();

// Create a unique name for the container
String containerName = "anycontainername";

// Create the container and return
// a container client object
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);

// Get a reference to a blob
blobClient = containerClient.getBlobClient(file.getOriginalFilename());

// Note: We are creating BlockBlob instance.
BlockBlobClient blockBlobClient = blobClient.getBlockBlobClient();

blockBlobClient.upload(file.getInputStream(), file.getSize());

有关更多信息,您可以阅读Azure blob Storage using Java上的这篇文章。