Из-за отсутствия REST API или SDK API для проверки наличия большого двоичного объекта, поэтому вы не можете напрямую проверить его.Как я знаю, единственный способ проверить наличие большого двоичного объекта - это проверить информацию об ошибке при получении большого двоичного объекта, см. Common REST API Error Codes
, как показано ниже.
Вот мои шаги и пример кода для проверки существования большого двоичного объекта с использованием Microsoft Azure Storage SDK v10 для Java .
maven зависимость Azure Storage SDK v10 для Java, как показано ниже.
<!-- https://mvnrepository.com/artifact/com.microsoft.azure/azure-storage-blob -->
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>10.4.0</version>
</dependency>
Создание URL-адреса BLOB-объекта с подписью SAS.
String accountName = "<your storage account name>";
String accountKey = "<your storage account key>";
public String generateUrlWithSAS(String containerName, String blobName) throws InvalidKeyException {
SharedKeyCredentials credentials = new SharedKeyCredentials(accountName, accountKey);
ServiceSASSignatureValues values = new ServiceSASSignatureValues()
.withProtocol(SASProtocol.HTTPS_ONLY) // Users MUST use HTTPS (not HTTP).
.withExpiryTime(OffsetDateTime.now().plusDays(2)) // 2 days before expiration.
.withContainerName(containerName)
.withBlobName(blobName);
BlobSASPermission permission = new BlobSASPermission()
.withRead(true)
.withAdd(true)
.withWrite(true);
values.withPermissions(permission.toString());
SASQueryParameters serviceParams = values.generateSASQueryParameters(credentials);
String sasSign = serviceParams.encode();
return String.format(Locale.ROOT, "https://%s.blob.core.windows.net/%s/%s%s", accountName, containerName, blobName, sasSign);
}
Сделайте запрос Http Head
для URL с подписью SAS, чтобы проверить код состояния ответа
public static boolean exists(String urlWithSAS) throws MalformedURLException, IOException {
HttpURLConnection conn = (HttpURLConnection) new URL(urlWithSAS).openConnection();
conn.setRequestMethod("HEAD");
return conn.getResponseCode() == 200;
}
Кроме того, вы можете напрямую проверить существование через перехват соответствующихисключение при загрузке BLOB-объекта.