วิธีสร้างไดเร็กทอรีย่อยใน blob container
ตัวอย่างเช่น,
ในคอนเทนเนอร์ blob ของฉันhttp://veda.blob.core.windows.net/document/
ถ้าเก็บไฟล์บางไฟล์ก็จะเป็น
ตอนนี้วิธีสร้างไดเรกทอรีย่อย
เพื่อให้ฉันสามารถจัดเก็บไฟล์
วิธีสร้างไดเร็กทอรีย่อยใน blob container
ตัวอย่างเช่น,
ในคอนเทนเนอร์ blob ของฉันhttp://veda.blob.core.windows.net/document/
ถ้าเก็บไฟล์บางไฟล์ก็จะเป็น
ตอนนี้วิธีสร้างไดเรกทอรีย่อย
เพื่อให้ฉันสามารถจัดเก็บไฟล์
คำตอบ:
หากต้องการเพิ่มสิ่งที่ Egon กล่าวเพียงแค่สร้างหยดของคุณชื่อ "โฟลเดอร์ / 1.txt" และจะใช้งานได้ ไม่ต้องสร้างไดเร็กทอรี
จริงๆมีเพียงชั้นเดียวของตู้คอนเทนเนอร์ คุณสามารถสร้าง "ระบบไฟล์" ได้เหมือนที่จัดเก็บข้อมูลแบบเลเยอร์ แต่ในความเป็นจริงแล้วทุกอย่างจะอยู่ใน 1 เลเยอร์ซึ่งเป็นคอนเทนเนอร์ที่อยู่
สำหรับการสร้าง "ระบบไฟล์" เสมือนเช่นพื้นที่จัดเก็บคุณสามารถตั้งชื่อหยดที่มีเครื่องหมาย "/" เพื่อให้คุณสามารถทำอะไรก็ได้ตามที่คุณต้องการด้วยวิธีการจัดเก็บ นอกจากนี้สิ่งที่ยอดเยี่ยมคือคุณสามารถค้นหาหยดในระดับเสมือนได้โดยให้สตริงบางส่วนสูงถึง '/'
2 สิ่งนี้คือการเพิ่ม '/' ลงในพา ธ และสตริงบางส่วนสำหรับการค้นหาร่วมกันสร้างที่เก็บ "file-system" เสมือน
มีความคิดเห็นโดย @ afr0 ถามวิธีกรองโฟลเดอร์ ..
มีสองวิธีในการใช้GetDirectoryReference
หรือวนลูปผ่านคอนเทนเนอร์และตรวจสอบประเภท รหัสด้านล่างอยู่ใน C #
CloudBlobContainer container = blobClient.GetContainerReference("photos");
//Method 1. grab a folder reference directly from the container
CloudBlobDirectory folder = container.GetDirectoryReference("directoryName");
//Method 2. Loop over container and grab folders.
foreach (IListBlobItem item in container.ListBlobs(null, false))
{
if (item.GetType() == typeof(CloudBlobDirectory))
{
// we know this is a sub directory now
CloudBlobDirectory subFolder = (CloudBlobDirectory)item;
Console.WriteLine("Directory: {0}", subFolder.Uri);
}
}
อ่านข้อมูลในเชิงลึกเพิ่มเติม: http://www.codeproject.com/Articles/297052/Azure-Storage-Blobs-Service-Working-with-Directori
หากคุณใช้Microsoft Azure Storage Explorerจะมีปุ่ม "โฟลเดอร์ใหม่" ที่ให้คุณสร้างโฟลเดอร์ในคอนเทนเนอร์ นี่คือโฟลเดอร์เสมือนจริง:
คุณไม่จำเป็นต้องสร้างไดเรกทอรีย่อย เพียงสร้าง blob container และใช้ชื่อไฟล์เช่นชื่อไฟล์ตัวแปรตามโค้ดด้านล่าง:
string filename = "document/tech/user-guide.pdf";
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudBlockBlob blob = cloudBlobContainer.GetBlockBlobReference(filename);
blob.StreamWriteSizeInBytes = 20 * 1024;
blob.UploadFromStream(fileStream); // fileStream is System.IO.Stream
ตามที่ @Egon ได้กล่าวไว้ข้างต้นไม่มีการจัดการโฟลเดอร์จริงในที่เก็บข้อมูล BLOB
คุณสามารถบรรลุคุณสมบัติบางอย่างของระบบไฟล์โดยใช้ '/' ในชื่อไฟล์ แต่สิ่งนี้มีข้อ จำกัด หลายประการ (ตัวอย่างเช่นจะเกิดอะไรขึ้นหากคุณต้องการเปลี่ยนชื่อ "โฟลเดอร์")
ตามกฎทั่วไปฉันจะเก็บไฟล์ของฉันให้แบนที่สุดเท่าที่จะเป็นไปได้ในคอนเทนเนอร์และให้แอปพลิเคชันของฉันจัดการโครงสร้างใด ๆ ที่ฉันต้องการเปิดเผยต่อผู้ใช้ปลายทาง (เช่นจัดการโครงสร้างโฟลเดอร์ที่ซ้อนกันในฐานข้อมูลของฉันมีบันทึกสำหรับแต่ละ ไฟล์อ้างอิง BLOB โดยใช้ชื่อคอนเทนเนอร์และชื่อไฟล์)
มีปัญหาที่คล้ายกันในขณะที่พยายาม Azure ตัวอย่างแรก serverless แอป
นี่คือข้อมูลเกี่ยวกับวิธีที่ฉันแก้ไขโดยการลบ \ ที่ด้านหน้า $ web
หมายเหตุ: $ web container ถูกสร้างขึ้นโดยอัตโนมัติขณะเปิดใช้งานเว็บไซต์แบบคงที่ ไม่เคยเห็น $ root container ที่ไหนเลย
//getting Invalid URI error while following tutorial as-is
az storage blob upload-batch -s . -d \$web --account-name firststgaccount01
//Remove "\" @destination param
az storage blob upload-batch -s . -d $web --account-name firststgaccount01
นี่คือวิธีที่ฉันทำใน CoffeeScript บน Node.JS:
blobService.createBlockBlobFromText 'containerName', (path + '$$$.$$$'), '', (err, result)->
if err
console.log 'failed to create path', err
else
console.log 'created path', path, result
C#