我用过
copyfromurl
将文件从一个存储复制到另一个存储的方法。
下面的代码对我有效。
我使用了相同的名称作为销毁文件名。如果要更改文件名,可以使用任何文件名。
如果使用
getBlobUrl
,应在中启用允许blob匿名访问
storage account => Configuration
如果没有,需要使用
SAS_url
.
package com.function;
import java.util.*;
import com.microsoft.azure.functions.annotation.*;
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.microsoft.azure.functions.*;
import com.azure.identity.*;;
public class HttpTriggerJava1 {
@FunctionName("HttpTriggerJava1")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
//Source Account
String sourceContainerName = "source";
String blobName = "oldfile.txt";
BlobServiceClient sourceServiceClient = new BlobServiceClientBuilder().credential(new DefaultAzureCredentialBuilder().build()).endpoint("https://storage29aug.blob.core.windows.net").buildClient();
BlobContainerClient sourceContainerClient = sourceServiceClient.getBlobContainerClient(sourceContainerName);
BlobClient sourceBlobClient = sourceContainerClient.getBlobClient(blobName);
//Destination Account
String destinationContainerName = "destination";
BlobServiceClient destinationServiceClient = new BlobServiceClientBuilder().credential(new DefaultAzureCredentialBuilder().build()).endpoint("https://destinationstorage29aug.blob.core.windows.net").buildClient();
BlobContainerClient destinationContainerClient = destinationServiceClient.getBlobContainerClient(destinationContainerName);
BlobClient destinatiBlobClient = destinationContainerClient.getBlobClient(blobName);
destinatiBlobClient.copyFromUrl(sourceBlobClient.getBlobUrl());
return request.createResponseBuilder(HttpStatus.OK).body("blob copied successfully").build();
}
}
pom.xml
:
<dependencies>
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>12.27.1</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.13.2</version>
</dependency>
</dependencies>
OUTPUT
: