2015-08-18 4 views
0

Я унаследовал проект, построенный с использованием Azure Storage Client 1.7, и обновляю его, так как Microsoft объявила, что с декабря этого года это не будет поддерживаться.Проверьте, существует ли Blob неизвестного типа BLOB

Ссылки на файлы в хранилище Blob хранятся в базе данных со следующими полями:

  1. FilePath - строка в виде uploadfiles/xxx/yyy/Image-20140117170146.jpg

  2. FileURI - строка в виде https://zzz.blob.core.windows.net/uploadfiles/xxx/yyy/Image-20140117170146.jpg

GetBlobReferenceFromServer будет сгенерировано исключение, если файл не существует, так что кажется, вы должны используйте GetBlockBlobReference, если вы знаете контейнер и тип Blob.

Так что мой вопрос (ы):

  • Могу ли я принимать любой Blobs в настоящее время загруженный (с использованием StorageClient 1.7) будет BlockBlobs?
  • Как мне нужно знать имя контейнера для вызова GetBlockBlobReference я могу достоверно сказать, что в приведенном выше моему контейнер примеры всегда будут uploadfiles

ответ

1

Могу ли я принимать любой Blobs в настоящее время загруженный (с использованием StorageClient 1.7) будут BlockBlobs?

Хотя вы не можете быть 100% уверены, что сгустки загружено через библиотеку клиента Storage 1.7, Blob Blobs потому что 1,7 также поддерживает Page Blobs однако вы можете сделать некоторые разумные предположения. Например, если файлы представляют собой файлы изображений и другие обычно используемые файлы (pdf, документ и т. Д.), Вы можете предположить, что они являются блочными блоками. Как правило, вы увидите файлы vhd, загруженные в виде капель страницы. Опять же, если они загружаются пользователями вашего приложения, более вероятно, что они являются блочными блоками.

Сказав это, я думаю, вы должны использовать метод GetBlobReferenceFromServer. Что вы можете сделать, это перечислить все blob из базы данных и для каждого из них вызвать метод GetBlobReferenceFromServer. Если blob существует, вы получите тип blob. Если blob не существует, этот метод даст вам ошибку. Это был бы самый быстрый способ определить тип существующих элементов базы данных в базе данных. Если вы хотите, вы можете сохранить тип blob в базе данных вместе с существующей записью, если вы обнаружите как блочные, так и страничные капли, когда вы проверяете тип blob, чтобы в будущем вам нужно было решить между созданием ссылки или CloudPageBlob. можно посмотреть на это поле.

Как мне нужно знать имя контейнера для вызова GetBlockBlobReference может я достоверно сказать, что в приведенных выше примерах моего контейнера всегда будет uploadfiles

Да. В приведенных выше примерах вы можете сказать, что контейнер blob равен upload files.

Смежные вопросы