Самый практичный способ читать большой двоичный объект Azure (PDF) в облаке?
Я в некотором роде новичок и никогда раньше не имел дела с облачными решениями.
Моя программа использует библиотеку PDFBox для извлечения данных из PDF-файлов и переименования файла на основе данных. В настоящее время это все локально, но в конечном итоге необходимо будет развернуть как функцию Azure. PDF-файлы будут храниться в контейнере BLOB-объектов Azure - триггер хранилища BLOB-объектов Azure для Функций Azure является важной причиной для этого выбора.
Конечно, я могу загрузить blob локально и прочитать его, но программа должна работать исключительно в облаке. Я пробовал читать капли напрямую с помощью Java, но это приводило к бессмысленным данным и несовместимо с PDFbox. Сейчас я планирую временно хранить файлы где-нибудь в облаке (например, OneDrive, хранилище файлов Azure) и попробовать открыть их оттуда. Однако похоже, что это может быстро превратиться в излишне беспорядочное решение. Мои вопросы:
(1) Есть ли способ открыть большой двоичный объект как файл, а не как 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
}