Ich möchte überprüfen, ob eine bestimmte Datei in Azure Blob Storage vorhanden ist. Ist es möglich, den Dateinamen zu überprüfen? Jedes Mal, wenn ich File Not Found Error bekam.So überprüfen Sie, ob eine Azure Blob-Datei vorhanden ist oder nicht
Antwort
sollte diese Erweiterung Methode Ihnen helfen:
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;
}
}
}
}
Verbrauch:
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
Ausnahmen können teuer sein ... –
Ja, aber ich glaube nicht, dass es eine andere Möglichkeit gibt, nach der Existenz des Blobs zu suchen. –
Hinweis: Dies funktioniert nicht mehr mit dem neuen SDK. Die anderen Antworten sind die Lösung. – Tincan
Mit dem aktualisierten SDK, sobald Sie die CloudBlobReference Sie auf exists() anrufen können Ihre Referenz.
UPDATE
Die entsprechende Dokumentation ist 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_
Meine Implementierung mit 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();
}
aber es gibt immer falsch zurück. Wer hat das gleiche Problem? –
Überprüfen Sie die Sichtbarkeit Ihres Buckets und der Datei selbst. Wenn es öffentlich sichtbar ist, versuchen Sie es über einen Browser. Möglicherweise ist Ihre URI nicht korrekt. –
Ich bekomme den Namen mit .ListBlobs() auf der gleichen BlobService-Instanz, daher sollte es kein Sichtbarkeits-/Berechtigungsproblem sein. –
var blob = client.GetContainerReference(containerName).GetBlockBlobReference(blobFileName);
if (blob.Exists())
//do your stuff
Versuchen Sie es Fügen Sie einen Kontext für Ihren Code hinzu, um der Person zu helfen, die die Frage stellt. –
Mit Microsoft verschoben. WindowsAzure.Storage.Blob ve rsion 4.3.0.0, der folgende Code sollte funktionieren (es gibt eine Menge brechender Änderungen mit älteren Versionen dieser Baugruppe):
Verwendung des Container-/Blob-Namens und der angegebenen API (scheint jetzt von Microsoft tatsächlich implementiert worden zu sein) :
return _blobClient.GetContainerReference(containerName).GetBlockBlobReference(blobName).Exists();
Mit Blob URI (Abhilfe):
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 Attribute fehl, wenn der Blob bestehende nicht. Dirty, ich weiß :)
@Steve, hilft das? Welche Version des Storage-Clients verwenden Sie? –
- 1. Überprüfen, ob Azure Resource Group vorhanden ist - Azure Powershell
- 2. Überprüfen, ob eine Ressourcendatei vorhanden ist
- 3. So überprüfen Sie, ob die Vorgabewerteinschränkung vorhanden ist?
- 4. Überprüfen, ob eine Zugangstabelle vorhanden ist
- 5. Überprüfen, ob ein Paket vorhanden ist oder nicht
- 6. So überprüfen Sie, ob sekundär jetzt synchronisiert ist oder nicht
- 7. Überprüfen, ob Formularelement vorhanden ist
- 8. überprüfen, ob xml vorhanden ist (nicht funktioniert)
- 9. Überprüfen Sie, ob eine ID in einer Datenbank vorhanden ist
- 10. Überprüfen Sie, ob der Wert in MySQL nicht vorhanden ist
- 11. Codeigniter - Überprüfen Sie, ob eine Controller-Funktion vorhanden ist oder nicht, von den Routen
- 12. überprüfen, ob Bild vorhanden ist php
- 13. Python - Überprüfen Sie, ob eine Datei leer ist oder nicht
- 14. jQuery: Überprüfen, ob ein Bild vorhanden ist
- 15. Überprüfen, ob ein bestimmter Datenattributwert vorhanden ist
- 16. Shopify Überprüfen, ob Bild vorhanden ist
- 17. Überprüfen, ob eine Datei in einem Makefile vorhanden ist
- 18. Überprüfen Sie, ob in Laravel ein eindeutiger Indexschlüssel vorhanden ist.
- 19. So überprüfen Sie, ob eine DataGridViewCheckBoxCell aktiviert ist
- 20. So überprüfen Sie, ob GPS deaktiviert ist
- 21. Überprüfen Sie, ob das Ereignis im Kalender vorhanden ist
- 22. PHP - Überprüfen Sie die Tabelle, ob der Eintrag vorhanden ist
- 23. Überprüfen, ob ein Commit vorhanden ist
- 24. Python3 Überprüfen, ob Unicode-Zeichen nicht vorhanden ist
- 25. Überprüfen Sie, ob die Datei vorhanden ist und ob sie eine bestimmte Zeichenfolge enthält
- 26. Überprüfen, ob eine Schleifenabhängigkeit in einer Hierarchie vorhanden ist
- 27. Überprüfen Sie, ob jede Ebene des Objekts vorhanden ist
- 28. Überprüfen Sie, ob Element vorhanden ist - Selen/JavaScript/node-js
- 29. So überprüfen Sie, ob die Anfrage in Codebehind Ajax ist oder nicht - ASP.NET Webforms
- 30. Überprüfen Sie, ob die registrierte Benutzer-Mail-Adresse in der Datenbank bereits vorhanden ist oder nicht
Ich denke, diese Frage ist ein Duplikat von diesem http://stackoverflow.com/questions/2642919/checking-if-a-blob-exists-in-azure-storage Überprüfen Sie es. –