Tôi muốn kiểm tra tệp cụ thể tồn tại trong Bộ nhớ Azure Blob. Có thể kiểm tra bằng cách chỉ định tên tệp của nó không? Mỗi lần tôi nhận được lỗi File Not Found.Cách kiểm tra xem tệp Azure Blob có tồn tại hay không
Trả lời
phương pháp Phần mở rộng này sẽ giúp bạn:
public static class BlobExtensions
{
public static bool Exists(this CloudBlob blob)
{
try
{
blob.FetchAttributes();
return true;
}
catch (StorageClientException e)
{
if (e.ErrorCode == StorageErrorCode.ResourceNotFound)
{
return false;
}
else
{
throw;
}
}
}
}
Cách sử dụng:
static void Main(string[] args)
{
var blob = CloudStorageAccount.DevelopmentStorageAccount
.CreateCloudBlobClient().GetBlobReference(args[0]);
// or CloudStorageAccount.Parse("<your connection string>")
if (blob.Exists())
{
Console.WriteLine("The blob exists!");
}
else
{
Console.WriteLine("The blob doesn't exist.");
}
}
http://blog.smarx.com/posts/testing-existence-of-a-windows-azure-blob
Trường hợp ngoại lệ có thể tốn kém ... –
Có, nhưng tôi không nghĩ có cách khác để kiểm tra sự tồn tại của đốm màu. –
Lưu ý: tính năng này không hoạt động với SDK mới. Các câu trả lời khác là giải pháp. – Tincan
Với SDK cập nhật, một khi bạn có CloudBlobReference bạn có thể gọi Tồn tại() trên của bạn tài liệu tham khảo.
CẬP NHẬT
Các tài liệu liên quan đã được chuyển đến https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.blob.cloudblob.exists?view=azurestorage-8.1.3#Microsoft_WindowsAzure_Storage_Blob_CloudBlob_Exists_Microsoft_WindowsAzure_Storage_Blob_BlobRequestOptions_Microsoft_WindowsAzure_Storage_OperationContext_
thực hiện của tôi sử dụng WindowsAzure.Storage v2.0.6.1
private CloudBlockBlob GetBlobReference(string filePath, bool createContainerIfMissing = true)
{
CloudBlobClient client = _account.CreateCloudBlobClient();
CloudBlobContainer container = client.GetContainerReference("my-container");
if (createContainerIfMissing && container.CreateIfNotExists())
{
//Public blobs allow for public access to the image via the URI
//But first, make sure the blob exists
container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
}
CloudBlockBlob blob = container.GetBlockBlobReference(filePath);
return blob;
}
public bool Exists(String filepath)
{
var blob = GetBlobReference(filepath, false);
return blob.Exists();
}
nhưng nó luôn trả về false. Có ai đang có vấn đề nào không? –
Xác minh khả năng hiển thị của nhóm của bạn và chính tệp đó. Nếu nó hiển thị công khai, hãy thử truy cập nó qua trình duyệt. Có thể URI của bạn không chính xác. –
Tôi nhận được tên với .ListBlobs() trên cùng một cá thể BlobService, vì vậy nó không phải là vấn đề hiển thị/quyền. –
var blob = client.GetContainerReference(containerName).GetBlockBlobReference(blobFileName);
if (blob.Exists())
//do your stuff
Thử thêm một số ngữ cảnh cho mã của bạn để giúp người đó đặt câu hỏi. –
Sử dụng Microsoft. WindowsAzure.Storage.Blob ve rsion 4.3.0.0, mã sau sẽ hoạt động (có nhiều thay đổi đột phá với các phiên bản cũ hơn của hội đồng này):
Tên container/blob và API đã cho (có vẻ như Microsoft đã triển khai thực tế điều này) :
return _blobClient.GetContainerReference(containerName).GetBlockBlobReference(blobName).Exists();
Sử dụng blob URI (workaround):
try
{
CloudBlockBlob cb = (CloudBlockBlob) _blobClient.GetBlobReferenceFromServer(new Uri(url));
cb.FetchAttributes();
}
catch (StorageException se)
{
if (se.Message.Contains("404") || se.Message.Contains("Not Found"))
{
return false;
}
}
return true;
(Fetch thuộc tính sẽ thất bại nếu các blob là không tồn tại. Bẩn, tôi biết :)
@Steve, điều này có giúp ích gì không? bạn đang sử dụng phiên bản nào của ứng dụng Lưu trữ? –
- 1. Kiểm tra xem URL có tồn tại hay không
- 2. Symfony2: kiểm tra xem phiên có tồn tại hay không
- 3. Cách kiểm tra xem tệp SharedPreferences có tồn tại hay không
- 4. Cách kiểm tra xem tệp có tồn tại từ url
- 5. Cách kiểm tra xem tệp có tồn tại trong makefile
- 6. Kiểm tra xem tệp cục bộ có tồn tại hay không (API HTML5 FS)
- 7. Kiểm tra xem tệp có tồn tại trong Yii
- 8. Làm cách nào để kiểm tra xem tài nguyên được nhúng có tồn tại hay không?
- 9. CQL: cách kiểm tra xem keyspace có tồn tại không?
- 10. Kiểm tra xem bảng có tồn tại
- 11. CMake kiểm tra xem tệp cục bộ có tồn tại
- 12. Cách nhanh hơn và ngắn hơn để kiểm tra xem cookie có tồn tại hay không
- 13. Javascript: cách kiểm tra xem văn bản có tồn tại trong trang web hay không
- 14. Làm cách nào để kiểm tra xem phiên có tồn tại hay không?
- 15. Cách kiểm tra xem một URL có tồn tại hay trả lại 404 bằng Java không?
- 16. Kiểm tra xem chuỗi có tồn tại hay không bằng cách xử lý
- 17. Làm cách nào để kiểm tra xem hàng có tồn tại hay không?
- 18. Làm cách nào để kiểm tra xem chuỗi có tồn tại hay không trong Oracle 11g?
- 19. Làm cách nào để kiểm tra xem một trường có tồn tại hay không trong MongoDB?
- 20. Cách kiểm tra xem tài sản có tồn tại không?
- 21. Kiểm tra xem tệp có tồn tại trong ksh
- 22. Kiểm tra xem phần tử XML có tồn tại hay không
- 23. Kiểm tra xem có tồn tại một hàng hay không, nếu không hãy chèn
- 24. Kiểm tra xem một thư mục có tồn tại hay không
- 25. Cách kiểm tra xem tệp có tồn tại trong một thư mục không?
- 26. Kiểm tra xem tên màu CSS có tồn tại không
- 27. php: kiểm tra xem đường dẫn có tồn tại không?
- 28. Kiểm tra xem khóa đăng ký có tồn tại không?
- 29. Làm cách nào để kiểm tra xem tệp có tồn tại trong Perl không?
- 30. Cách kiểm tra xem thư mục chứa tệp có tồn tại không?
Tôi nghĩ câu hỏi này là bản sao của http://stackoverflow.com/questions/2642919/checking-if-a-blob-exists-in-azure-storage này. –