Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在云中读取Azure Blob(PDF)最实用的方法是什么?_Java_Azure Storage Blobs_Pdfbox - Fatal编程技术网

Java 在云中读取Azure Blob(PDF)最实用的方法是什么?

Java 在云中读取Azure Blob(PDF)最实用的方法是什么?,java,azure-storage-blobs,pdfbox,Java,Azure Storage Blobs,Pdfbox,我是个初学者,以前从未处理过基于云的解决方案 我的程序使用PDFBox库从PDF中提取数据,并根据数据重命名文件。它目前都是本地的,但最终需要作为Azure功能部署。PDF将存储在Azure Blob容器中-Azure函数的Azure Blob存储触发器是选择此选项的重要原因 当然,我可以在本地下载blob并读取它,但是程序应该只在云中运行。我曾尝试使用Java直接读取blob,但这会导致数据混乱,并且与PDFbox不兼容。我现在的计划是将文件临时存储在云中的其他位置(例如OneDrive、Az

我是个初学者,以前从未处理过基于云的解决方案

我的程序使用PDFBox库从PDF中提取数据,并根据数据重命名文件。它目前都是本地的,但最终需要作为Azure功能部署。PDF将存储在Azure Blob容器中-Azure函数的Azure Blob存储触发器是选择此选项的重要原因

当然,我可以在本地下载blob并读取它,但是程序应该只在云中运行。我曾尝试使用Java直接读取blob,但这会导致数据混乱,并且与PDFbox不兼容。我现在的计划是将文件临时存储在云中的其他位置(例如OneDrive、Azure文件存储),然后尝试从那里打开它们。然而,这似乎很快就会变成一个过于混乱的解决方案。我的问题是:

(1) 有没有办法将blob作为文件而不是CloudBlockBlob打开,这样就不需要执行此附加步骤

(2) 如果没有,在这种情况下,建议的临时存储是什么


(3) 是否有其他方法解决此问题?

由于您正在规划Azure功能,因此可以使用直接获取字节。然后可以使用PDFBox PdfDocument加载方法直接构建对象
PDDocument.load(content)
。您不需要任何临时存储来存储要加载的文件

@FunctionName("blobprocessor")
public void run(
  @BlobTrigger(name = "file",
               dataType = "binary",
               path = "myblob/{name}",
               connection = "MyStorageAccountAppSetting") byte[] content,
  @BindingName("name") String filename,
  final ExecutionContext context
) {
  context.getLogger().info("Name: " + filename + " Size: " + content.length + " bytes");
  PDDocument doc = PDDocument.load(content);
  // do your stuffs
}

由于您正在规划Azure函数,因此可以使用直接获取字节。然后可以使用PDFBox PdfDocument加载方法直接构建对象
PDDocument.load(content)
。您不需要任何临时存储来存储要加载的文件

@FunctionName("blobprocessor")
public void run(
  @BlobTrigger(name = "file",
               dataType = "binary",
               path = "myblob/{name}",
               connection = "MyStorageAccountAppSetting") byte[] content,
  @BindingName("name") String filename,
  final ExecutionContext context
) {
  context.getLogger().info("Name: " + filename + " Size: " + content.length + " bytes");
  PDDocument doc = PDDocument.load(content);
  // do your stuffs
}

非常感谢!我在PDFBox里漏掉了这个documentation@AlexanderJ如果答案帮助你解决了问题,请点击复选标记。非常感谢!我在PDFBox里漏掉了这个documentation@AlexanderJ如果答案帮助您解决问题,请单击复选标记。