วิธีที่เป็นประโยชน์ที่สุดในการอ่าน Azure Blob (PDF) ในคลาวด์?

Aug 18 2020

ฉันค่อนข้างเป็นมือใหม่และไม่เคยจัดการกับโซลูชันบนคลาวด์มาก่อน

โปรแกรมของฉันใช้ไลบรารี PDFBox เพื่อดึงข้อมูลจาก PDF และเปลี่ยนชื่อไฟล์ตามข้อมูล ปัจจุบันทั้งหมดเป็นแบบ Local แต่ในที่สุดก็จะต้องปรับใช้เป็น Azure Function ไฟล์ PDF จะถูกจัดเก็บไว้ใน Azure Blob Container - ทริกเกอร์ Azure Blob Storage สำหรับ Azure Functions เป็นเหตุผลสำคัญสำหรับตัวเลือกนี้

แน่นอนฉันสามารถดาวน์โหลด blob ในเครื่องและอ่านได้ แต่โปรแกรมควรทำงานในระบบคลาวด์เท่านั้น ฉันได้ลองอ่าน blobs โดยตรงโดยใช้ Java แต่ส่งผลให้เกิดข้อมูลที่ไม่เหมาะสมและไม่สามารถใช้งานร่วมกับ PDFbox ได้ แผนของฉันตอนนี้คือเก็บไฟล์ชั่วคราวไว้ที่อื่นในคลาวด์ (เช่น OneDrive, Azure File Storage) และลองเปิดจากที่นั่น อย่างไรก็ตามดูเหมือนว่ามันสามารถเปลี่ยนเป็นวิธีแก้ปัญหาที่ยุ่งเหยิงเกินไปได้อย่างรวดเร็ว คำถามของฉัน:

(1) มีวิธีใดบ้างที่สามารถเปิด Blob เป็นไฟล์ได้แทนที่จะเป็น CloudBlockBlob ดังนั้นจึงไม่จำเป็นต้องใช้ขั้นตอนเพิ่มเติมนี้

(2) ถ้าไม่ควรมีพื้นที่เก็บข้อมูลชั่วคราวที่แนะนำในกรณีนี้คืออะไร?

(3) มีวิธีอื่นในการแก้ไขปัญหานี้หรือไม่?

คำตอบ

2 krishg Aug 29 2020 at 16:30

เนื่องจากคุณกำลังวางแผนฟังก์ชัน 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
}