Как мы можем создавать подпапки в контейнере? - PullRequest
0 голосов
/ 25 февраля 2020

Я хочу сохранить указанные c изображения или файлы конфигурации в такой структуре:

/ test / images / ab c .png
/ test / images1 / ab c .png

Вопрос: Как мы можем создавать подпапки в контейнере. В моем случае test будет иметь контейнер, а изображения будут папкой, а images и images1 будут созданы во время хранения файла ab c .png.

В AWS он автоматически создаст путь, подобный этому и мы можем сохранить напрямую.

ниже приведен код, который я пытался сделать.

CloudStorageAccount account = CloudStorageAccount.parse(storageConnectionString);
CloudBlobClient client = account.createCloudBlobClient();
CloudBlobContainer container = client.getContainerReference("test");
String key="images1/746ca358-2c6d-41f1-943e-a6a5ae287826.png";
CloudBlockBlob blob = container.getBlockBlobReference(key);

File sourceFile = new File("/Users/saurabhmishra/Desktop/error.png");
FileInputStream inputStream = new FileInputStream(sourceFile);
blob.upload(inputStream,100);

, и я получаю следующую ошибку.

com.microsoft.azure.storage.StorageException: The specified blob does not exist.
    at com.microsoft.azure.storage.StorageException.translateException(StorageException.java:87)
    at com.microsoft.azure.storage.core.StorageRequest.materializeException(StorageRequest.java:305)
    at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:196)
    at com.microsoft.azure.storage.blob.CloudBlockBlob.uploadFullBlob(CloudBlockBlob.java:1035)
    at com.microsoft.azure.storage.blob.CloudBlockBlob.upload(CloudBlockBlob.java:864)
    at com.microsoft.azure.storage.blob.CloudBlockBlob.upload(CloudBlockBlob.java:743)
    at com.microsoft.azure.storage.blob.CloudBlockBlob.upload(CloudBlockBlob.java:712)
    at quickstart.Test.upload(Test.java:54)
    at quickstart.Test.main(Test.java:23)

Process finished with exit code 0

1 Ответ

0 голосов
/ 26 февраля 2020

Вот пример:

    public static void main(String[] args) throws Exception {
        String connectionString = "DefaultEndpointsProtocol=https;AccountName=storagetest789;AccountKey=G3*****************************w==;EndpointSuffix=core.windows.net";
        StorageCredentials credentials = StorageCredentials.tryParseCredentials(connectionString);

        CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);
        CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
        CloudBlobContainer blobContainer = blobClient.getContainerReference("pub");
        blobContainer.createIfNotExists();

        CloudBlobDirectory subDirectory = blobContainer.getDirectoryReference("subDirectory1/subdirectory2/");
        CloudBlockBlob blockBlob = subDirectory.getBlockBlobReference("test.txt");
        blockBlob.uploadFromFile("D:\\User\\Desktop\\test.txt");

    }

По сути, вам просто нужно получить ссылку на каталог с помощью blobContainer.getDirectoryReference("subDirectory1/subdirectory2/");, затем вы можете получить ссылку на блочный блоб из него.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...