多个文件的azure@bloboutput不使用java

6ovsh4lw  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(262)

我有一个用java编写的azure函数,它从输入绑定中提取zip文件。我想将所有提取的文件存储到azure blob容器中,所以我使用@bloboutput绑定。输出绑定仅将一个文件带到azure容器中的存储。我希望所有文件的名称相同,因为它是在zip文件。
以下是我所做的:

@FunctionName("QueueTriger")
public void execute(@QueueTrigger(name = "httpQueue", dataType = "", queueName = "queuetest", connection = "AzureWebJobsStorage") Details message,
         @BlobInput(
                  name = "file", 
                  dataType = "binary", connection = "AzureWebJobsStorage",
                  path = "zipfiles/test.zip") byte[] content,
         @BlobOutput(
                    name = "target", 
                    dataType = "binary",
                    path = "output/sample",
                    connection = "AzureWebJobsStorage") OutputBinding<byte[]> output,
                  final ExecutionContext executionContext) throws IOException {

     InputStream targetStream = new ByteArrayInputStream(content);

     ZipInputStream zipIn = new ZipInputStream(targetStream);

     ZipEntry zipEntry = zipIn.getNextEntry();
     while(zipEntry != null) {
         executionContext.getLogger().info("ZipEntry Name: " + zipEntry.getName());

         ByteArrayOutputStream outputB = new ByteArrayOutputStream();
         byte[] buf = new byte[1024];
         int n;
         while ((n = zipIn.read(buf, 0, 1024)) != -1) {
             outputB.write(buf, 0, n);
         }
        output.setValue(outputB.toByteArray());
         zipEntry = zipIn.getNextEntry();
     }
     zipIn.close();

}

上面的代码是装箱一个文件样本,其中保存了zip文件中的最后一个文件内容。但我的期望是,示例文件夹应该包含所有在zip中的文件,这些文件的名称与它们在zip中的名称相同。

4xy9mtcn

4xy9mtcn1#

上面的代码是装箱一个文件样本,其中保存了zip文件中的最后一个文件内容。但我的期望是,示例文件夹应该包含所有在zip中的文件,这些文件的名称与它们在zip中的名称相同。
同一容器中不能有多个同名文件。代码只上载最后一个文件的原因是,稍后上载到存储器的文件将覆盖具有相同名称的前一个文件。

相关问题