วิธีที่เป็นประโยชน์ที่สุดในการอ่าน Azure Blob (PDF) ในคลาวด์?
ฉันค่อนข้างเป็นมือใหม่และไม่เคยจัดการกับโซลูชันบนคลาวด์มาก่อน
โปรแกรมของฉันใช้ไลบรารี 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) มีวิธีอื่นในการแก้ไขปัญหานี้หรือไม่?
คำตอบ
เนื่องจากคุณกำลังวางแผนฟังก์ชัน 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
}