Dodaj warunek dostępu do kodu tak, że sprawdza przeciwko mieniu blob ETag - symbole wieloznaczne są dozwolone, więc chcemy tylko pozwalają na przesyłanie jeśli żadne plamy o tej nazwie ma żadnych wytycznych (co jest okrężny sposób powiedzenia, czy istnieje nazwa kropelki).
Otrzymujesz wyjątek StorageException zgodnie z opisem poniżej.
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
try {
blockBlob.UploadFromStream(stream, accessCondition: AccessCondition.GenerateIfNoneMatchCondition("*"));
} catch (StorageException ex) {
if (ex.RequestInformation.HttpStatusCode == (int)System.Net.HttpStatusCode.Conflict)
// Handle duplicate blob condition
}
throw;
}
Jak rozumiem, to może nie działać, jeśli masz wielu klientów z dostępem do kontenera - jak kropelka może zostać utworzony przez inny wątek/system/klient między tym wątku ' Exist'' i instrukcja wysyłania. Możesz przetestować ten scenariusz przed użyciem rozwiązania Exists w środowisku z wieloma klientami. –