Как скачать Azure BLOB? - PullRequest
0 голосов
/ 03 декабря 2018

Я не могу загрузить файл Azure BLOB на свой локальный диск.Пожалуйста, найдите ниже код Java, который я использую для загрузки файла.Когда я запускаю и выполняю тест триггера HTTP, я не вижу файл, загруженный в мой локальный путь.Кроме того, я дал аутентификацию как публичный доступ. И я могу читать содержимое txt-файла с помощью blob.downloadText ().Но я не могу скачать его в файл.

Мое требование - загрузить PDF-файл из хранилища BLOB-объектов на мой локальный диск.

 @FunctionName("BlobDownload-Java")
    public void run1(
            @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {
        context.getLogger().info("Java HTTP trigger processed a request.");


        try {
            // Retrieve storage account from connection-string.
            CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);

            // Create the blob client.
            CloudBlobClient blobClient = storageAccount.createCloudBlobClient();

            // Get a reference to a container.
            // The container name must be lower case
            CloudBlobContainer container = blobClient.getContainerReference("doccontainer");


          CloudBlockBlob blob1 = container.getBlockBlobReference("AssembledDoc.pdf");

          context.getLogger().info("File Name Check 1 ----->" +  blob1.getName()); 


          CloudBlockBlob blob2 = container.getBlockBlobReference("Test.txt");
          String s= blob2.downloadText();
          context.getLogger().info("Text Document content ----->" + s );
          File file = new File("C:\\Users\\wb541348\\Project\\Temp.txt");
          blob2.downloadToFile(file.getAbsolutePath());

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Если вы просто хотите загрузить PDF-файл на локальный компьютер, вот мой тестовый код, вы можете попробовать.

@Test
public void downloadBlob(){


    try {
        CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);

        //Create the service client object for credentialed access to the Blob service.
        CloudBlobClient blobClient = storageAccount.createCloudBlobClient();

        // Retrieve a reference to a container.
        CloudBlobContainer container = blobClient.getContainerReference("blobcontainer");


        CloudBlob blob1 =container.getBlockBlobReference("thinking-in-java.pdf");

        blob1.download(new FileOutputStream("C:\\Users\\georgec\\Documents\\" + blob1.getName()));


    } catch (URISyntaxException e) {
        e.printStackTrace();
    } catch (InvalidKeyException e) {
        e.printStackTrace();
    } catch (StorageException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } 

}

Если у вас все еще есть вопросы, пожалуйста, дайте мне знать.

0 голосов
/ 04 декабря 2018

@ Prasanna, Вы не можете загрузить большой двоичный объект в локальный путь, потому что шаблон вашего пути неверен, это должно быть "c: /Users/wb541348/Project/Temp.txt", есть еще один момент, на который следует обратить внимание, то есть имя файла необходимо, что означает, что путь не должен быть только папкой, надеюсь, что это полезно.Вы также можете щелкнуть этот образец лазурного блоба для Java SDK для справки.

...