Hızlı Başlangıç: Tarayıcıda JavaScript v12 SDK ile blobları yönetme
Azure Blob depolama, büyük miktarlarda yapılandırılmamış verileri depolamak için iyileştirilmiştir. Bloblar görüntüler, belgeler, akış medyası ve arşiv verileri dahil olmak üzere metin veya ikili verileri barındırabilen nesnelerdir. Bu hızlı başlangıçta, tarayıcıda JavaScript kullanarak blobları yönetmeyi öğreneceksiniz. Blobları karşıya yükleyip listeleyecek ve kapsayıcı oluşturup sileceksiniz.
Örnek kod, JavaScript için Azure Blob depolama istemci kitaplığı ile aşağıdaki görevlerin nasıl yerine getir yapılacağını gösterir:
- Kullanıcı arabirimi öğeleri için alanları bildirme
- Depolama hesabı bilgilerinizi ekleme
- İstemci nesneleri oluşturma
- Depolama kapsayıcısı oluşturma ve silme
- Blobları listeleme
- Blobları karşıya yükleme
- Blob’ları silme
Ek kaynaklar:
API başvurusu | Kitaplık kaynak kodu | Paket (npm) | Örnekleri
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı
- Azure Depolama hesabı
- Node.js LTS
- Microsoft Visual Studio Code
Nesne modeli
Blob depolama üç tür kaynak sunar:
- Depolama hesabı
- Depolama hesabındaki bir kapsayıcı
- Kapsayıcıdaki bir blob
Aşağıdaki diyagramda bu kaynaklar arasındaki ilişki gösterilmektedir.
Bu hızlı başlangıçta, bu kaynaklarla etkileşime geçmek için aşağıdaki JavaScript sınıflarını kullanacaksınız:
- BlobServiceClient: sınıfı,
BlobServiceClient
Azure Depolama kaynaklarını ve blob kapsayıcılarını işlemenize olanak tanır. - ContainerClient: sınıfı,
ContainerClient
Azure Depolama kapsayıcılarını ve bloblarını işlemenize olanak tanır. - BlockBlobClient: sınıfı,
BlockBlobClient
Azure Depolama bloblarını işlemenize olanak tanır.
Tarayıcı erişimi için depolama hesabını yapılandırma
Depolama hesabınıza bir web tarayıcısından program aracılığıyla erişmek için CORS erişimini yapılandırmanız ve bir SAS bağlantı dizesi oluşturmanız gerekir.
CORS kuralı oluşturma
Web uygulamanızın istemciden blob depolamaya erişebilmesi için hesabınızı çıkış noktaları arası kaynak paylaşımını veya CORS'yi etkinleştirecek şekilde yapılandırmanız gerekir.
Azure portal depolama hesabınızı seçin. Yeni bir CORS kuralı tanımlamak için Ayarlar bölümüne gidin ve CORS'yi seçin. Bu hızlı başlangıçta, tamamen açık bir CORS kuralı oluşturursunuz:
Aşağıdaki tabloda her bir CORS ayarı açıklanmakta ve kuralı tanımlamak için kullanılan değerler anlatılmaktadır.
Ayar | Değer | Açıklama |
---|---|---|
İZIN VERILEN ÇıKıŞ NOKTALARı | * | Kabul edilebilir çıkış noktaları olarak etki alanları kümesinin virgülle ayrılmış bir listesini kabul eder. Değerin * olarak ayarlanması, depolama hesabına tüm etki alanlarının erişmesine izin verir. |
İZIN VERILEN YÖNTEMLER | DELETE, GET, HEAD, MERGE, POST, OPTIONS ve PUT | Depolama hesabına göre yürütülmesine izin verilen HTTP fiillerini listeler. Bu hızlı başlangıçta tüm kullanılabilir seçenekleri işaretleyin. |
İZIN VERILEN ÜST BILGILER | * | Depolama hesabı tarafından izin verilen istek üst bilgilerinin (ön ekli üst bilgiler dahil) listesini tanımlar. Değerin * olarak ayarlanması tüm üst bilgilere erişim izni verir. |
KULLANıMA SUNULAN ÜST BILGILER | * | Hesaba göre izin verilen yanıt üst bilgilerini listeler. Değerin * olarak ayarlanması hesabın herhangi bir üst bilgiyi göndermesine izin verir. |
MAKS YAŞ | 86400 | Tarayıcının denetim öncesi OPTIONS isteğini saniyeler içinde önbelleğe alma süresi üst sınırı. 86400 değeri, önbelleğin bir tam gün boyunca kalmasına izin verir. |
Alanları bu tablodaki değerlerle doldurduktan sonra Kaydet düğmesini seçin.
Önemli
Üretimde kullandığınız tüm ayarların, güvenli erişimi korumak için depolama hesabınıza gereken minimum erişim miktarını ortaya çıkardığından emin olun. Burada açıklanan CORS ayarları esnek bir güvenlik ilkesini tanımladığı için hızlı başlangıç için uygundur. Ancak bu ayarlar gerçek bir bağlam için önerilmez.
SAS bağlantı dizesi oluşturma
Paylaşılan erişim imzası (SAS), Azure Blob depolama isteklerini yetkilendirmek için tarayıcıda çalışan kod tarafından kullanılır. İstemci, SAS kullanarak hesap erişim anahtarı veya bağlantı dizesi kullanmadan depolama kaynaklarına erişimi yetkilendirebilir. SAS hakkında daha fazla bilgi edinmek için bkz. Paylaşılan erişim imzaları (SAS) kullanma.
Blob hizmeti SAS URL'sini almak için şu adımları izleyin:
- Azure portal depolama hesabınızı seçin.
- Güvenlik + ağ bölümüne gidin ve Paylaşılan erişim imzası'nı seçin.
- SAS belirtecinin tüm depolama hesabı hizmetlerinize erişimi olacağını anlamak için İzin verilen hizmetler'i gözden geçirin:
- Blob
- Dosya
- Kuyruk
- Tablo
- Eklenecek İzin verilen kaynak türlerini seçin:
- Hizmet
- Kapsayıcı
- Nesne
- SAS belirtecinin varsayılan olarak sınırlı bir ömrü olduğunu anlamak için Başlangıç ve bitiş tarihini/saatini gözden geçirin.
- Ekranı aşağı kaydırın ve SAS ve bağlantı dizesi oluştur düğmesini seçin.
- Daha fazla aşağı kaydırın ve Blob hizmeti SAS URL'si alanını bulun
- Blob hizmeti SAS URL'si alanının en sağ ucundaki Panoya kopyala düğmesini seçin.
- Kopyalanan URL'yi bir gelecek adımda kullanmak üzere bir yere kaydedin.
Not
Portal tarafından döndürülen SAS belirteci, URL sorgu dizesi için sınırlayıcı karakteri ('?') içermez. SAS belirtecini bir kaynak URL'sine ekliıyorsanız, SAS belirtecini eklemeden önce sınırlayıcı karakterini kaynak URL'sine eklemeyi unutmayın.
JavaScript projesi oluşturma
blob-quickstart-v12 adlı bir JavaScript uygulaması oluşturun.
Konsol penceresinde (cmd, PowerShell veya Bash gibi) proje için yeni bir dizin oluşturun.
mkdir blob-quickstart-v12
Yeni oluşturulan blob-quickstart-v12 dizinine geçin.
cd blob-quickstart-v12
package.json oluşturun.
npm init -y
Projeyi Visual Studio Code açın:
code .
Blob depolama için npm paketini yükleme
Visual Studio Code terminalinde Azure Storage npm paketini yükleyin:
npm install @azure/storage-blob
Tarayıcının dosyalarını ve paketini paketlemek için bir paketleyici paketi yükleyin:
npm install parcel
Farklı bir paketleyici kullanmayı planlıyorsanız Azure SDK'yı paketleme hakkında daha fazla bilgi edinin.
Tarayıcı paketlemeyi yapılandırma
Visual Studio Code'da package.json dosyasını açın ve ekleyin
browserlist
. Bubrowserlist
, popüler tarayıcıların en son sürümünü hedefler. Tam package.json dosyası şimdi şöyle görünmelidir:"browserslist": [ "last 1 Edge version", "last 1 Chrome version", "last 1 Firefox version", "last 1 safari version", "last 1 webkit version" ],
Web sitesini paketlemek için bir başlangıç betiği ekleyin:
"scripts": { "start": "parcel ./index.html" },
HTML dosyasını oluşturma
Aşağıdaki HTML kodunu oluşturun
index.html
ve ekleyin:<!-- index.html --> <!DOCTYPE html> <html> <body> <button id="create-container-button">Create container</button> <button id="select-button">Select and upload files</button> <input type="file" id="file-input" multiple style="display: none;" /> <button id="list-button">List files</button> <button id="delete-button">Delete selected files</button> <button id="delete-container-button">Delete container</button> <p><b>Status:</b></p> <p id="status" style="height:160px; width: 593px; overflow: scroll;" /> <p><b>Files:</b></p> <select id="file-list" multiple style="height:222px; width: 593px; overflow: scroll;" /> </body> <script type="module" src="./index.js"></script> </html>
JavaScript dosyasını oluşturma
Proje dizininden:
index.js
adlı yeni bir dosya oluşturun.Azure Depolama npm paketini ekleyin.
const { BlobServiceClient } = require("@azure/storage-blob");
Kullanıcı arabirimi öğeleri için alanları bildirme
Kullanıcı etkileşimi için DOM öğeleri ekleme:
const createContainerButton = document.getElementById("create-container-button");
const deleteContainerButton = document.getElementById("delete-container-button");
const selectButton = document.getElementById("select-button");
const fileInput = document.getElementById("file-input");
const listButton = document.getElementById("list-button");
const deleteButton = document.getElementById("delete-button");
const status = document.getElementById("status");
const fileList = document.getElementById("file-list");
const reportStatus = message => {
status.innerHTML += `${message}<br/>`;
status.scrollTop = status.scrollHeight;
}
Bu kod, her HTML öğesi için alanları bildirir ve çıkışı görüntülemek için bir reportStatus
işlev uygular.
Depolama hesabı bilgilerinizi ekleme
Depolama hesabınıza erişmek için index.js dosyasının sonuna aşağıdaki kodu ekleyin. değerini <placeholder>
, daha önce oluşturduğunuz Blob hizmeti SAS URL'nizle değiştirin. aşağıdaki kodu index.js dosyasının sonuna ekleyin.
// Update <placeholder> with your Blob service SAS URL string
const blobSasUrl = "<placeholder>";
İstemci nesneleri oluşturma
Depolama hesabınıza bağlanmak için BlobServiceClient ve ContainerClient nesneleri oluşturun. aşağıdaki kodu index.js dosyasının sonuna ekleyin.
// Create a new BlobServiceClient
const blobServiceClient = new BlobServiceClient(blobSasUrl);
// Create a unique name for the container by
// appending the current time to the file name
const containerName = "container" + new Date().getTime();
// Get a container client from the BlobServiceClient
const containerClient = blobServiceClient.getContainerClient(containerName);
Depolama kapsayıcısı oluşturma ve silme
Web sayfasında ilgili düğmeyi seçtiğinizde depolama kapsayıcısını oluşturun ve silin. aşağıdaki kodu index.js dosyasının sonuna ekleyin.
const createContainer = async () => {
try {
reportStatus(`Creating container "${containerName}"...`);
await containerClient.create();
reportStatus(`Done. URL:${containerClient.url}`);
} catch (error) {
reportStatus(error.message);
}
};
const deleteContainer = async () => {
try {
reportStatus(`Deleting container "${containerName}"...`);
await containerClient.delete();
reportStatus(`Done.`);
} catch (error) {
reportStatus(error.message);
}
};
createContainerButton.addEventListener("click", createContainer);
deleteContainerButton.addEventListener("click", deleteContainer);
Blobları listeleme
Dosyaları listele düğmesini seçtiğinizde depolama kapsayıcısının içeriğini listeleyin. aşağıdaki kodu index.js dosyasının sonuna ekleyin.
const listFiles = async () => {
fileList.size = 0;
fileList.innerHTML = "";
try {
reportStatus("Retrieving file list...");
let iter = containerClient.listBlobsFlat();
let blobItem = await iter.next();
while (!blobItem.done) {
fileList.size += 1;
fileList.innerHTML += `<option>${blobItem.value.name}</option>`;
blobItem = await iter.next();
}
if (fileList.size > 0) {
reportStatus("Done.");
} else {
reportStatus("The container does not contain any files.");
}
} catch (error) {
reportStatus(error.message);
}
};
listButton.addEventListener("click", listFiles);
Bu kod ContainerClient.listBlobsFlat işlevini çağırır ve döndürülen her BlobItem'in adını almak için bir yineleyici kullanır. Her BlobItem
için , Dosyalar listesini ad özelliği değeriyle güncelleştirir.
Blobları kapsayıcıya yükleme
Dosyaları seç ve karşıya yükle düğmesini seçtiğinizde dosyaları depolama kapsayıcısına yükleyin . aşağıdaki kodu index.js dosyasının sonuna ekleyin.
const uploadFiles = async () => {
try {
reportStatus("Uploading files...");
const promises = [];
for (const file of fileInput.files) {
const blockBlobClient = containerClient.getBlockBlobClient(file.name);
promises.push(blockBlobClient.uploadBrowserData(file));
}
await Promise.all(promises);
reportStatus("Done.");
listFiles();
}
catch (error) {
reportStatus(error.message);
}
}
selectButton.addEventListener("click", () => fileInput.click());
fileInput.addEventListener("change", uploadFiles);
Bu kod , Dosyaları seç ve karşıya yükle düğmesini gizli file-input
öğeye bağlar. Düğme click
olayı, dosya giriş click
olayını tetikler ve dosya seçiciyi görüntüler. Dosyaları seçip iletişim kutusunu kapattıktan sonra olay input
gerçekleşir ve uploadFiles
işlev çağrılır. Bu işlev bir BlockBlobClient nesnesi oluşturur ve seçtiğiniz her dosya için yalnızca tarayıcı uploadBrowserData işlevini çağırır. Her çağrı bir Promise
döndürür. Her Promise
biri bir listeye eklenir, böylece hepsi birlikte beklenebilir ve bu da dosyaların paralel olarak karşıya yüklenmesine neden olur.
Blob’ları silme
Seçili dosyaları sil düğmesini seçtiğinizde depolama kapsayıcısından dosyaları silin . aşağıdaki kodu index.js dosyasının sonuna ekleyin.
const deleteFiles = async () => {
try {
if (fileList.selectedOptions.length > 0) {
reportStatus("Deleting files...");
for (const option of fileList.selectedOptions) {
await containerClient.deleteBlob(option.text);
}
reportStatus("Done.");
listFiles();
} else {
reportStatus("No files selected.");
}
} catch (error) {
reportStatus(error.message);
}
};
deleteButton.addEventListener("click", deleteFiles);
Bu kod, listede seçilen her dosyayı kaldırmak için ContainerClient.deleteBlob işlevini çağırır. Daha sonra Dosyalar listesinin listFiles
içeriğini yenilemek için daha önce gösterilen işlevi çağırır.
Kodu çalıştırma
Visual Studio Code terminalden uygulamayı çalıştırın.
npm start
Bu işlem dosyaları paketler ve bir web sunucusu başlatır.
Aşağıdaki URL'yi kullanarak web sitesine bir tarayıcıyla erişin:
http://localhost:1234
1. Adım: Kapsayıcı oluşturma
- Web uygulamasında Kapsayıcı oluştur'u seçin. durumu, bir kapsayıcının oluşturulduğunu gösterir.
- Azure portal kapsayıcınızın oluşturulduğunu doğrulayın. Depolama hesabınızı seçin. Blob hizmeti bölümünden Kapsayıcılar’ı seçin. Yeni kapsayıcının göründüğünü doğrulayın. ( Yenile'yi seçmeniz gerekebilir.)
2. Adım: Kapsayıcıya blob yükleme
- Yerel bilgisayarınızda, test.txtgibi bir test dosyası oluşturun ve kaydedin.
- Web uygulamasında Dosya seç ve karşıya yükle'yi seçin.
- Test dosyanıza göz atın ve aç'ı seçin. Durum, dosyanın karşıya yüklendiğini ve dosya listesinin alındığını gösterir.
- Azure portal daha önce oluşturduğunuz yeni kapsayıcının adını seçin. Test dosyasının göründüğünü doğrulayın.
3. Adım: Blobu silme
- Web uygulamasındaki Dosyalar'ın altında test dosyasını seçin.
- Seçili dosyaları sil'i seçin. durumu, dosyanın silindiğini ve kapsayıcının dosya içermediğini gösterir.
- Azure portal Yenile'yi seçin. Blob bulunamadı ifadesini gördüğünüzden emin olun.
4. Adım: Kapsayıcıyı silme
- Web uygulamasında Kapsayıcıyı sil'i seçin. durumu kapsayıcının silindiğini gösterir.
- Azure portal hesap adını> | seçin< Portal bölmesinin sol üst kısmındaki Kapsayıcılar bağlantısı.
- Yenile'yi seçin. Yeni kapsayıcı kaybolur.
- Web uygulamasını kapatın.
Depolama öykünücüsü kullanma
Bu hızlı başlangıçta Azure bulutu üzerinde bir kapsayıcı ve blob oluşturulmuştur. Bu kaynakları geliştirme ve test amacıyla Azure Depolama öykünücüsinde yerel olarak oluşturmak için Azure Blob depolama npm paketini de kullanabilirsiniz.
Kaynakları temizleme
- Bu hızlı başlangıcı tamamladığınızda dizini silin
blob-quickstart-v12
. - Azure Depolama kaynağınızı kullanmayı bitirdiyseniz, iki yöntemden birini kullanarak kaynak grubunuzu kaldırın:
Sonraki adımlar
Bu hızlı başlangıçta JavaScript kullanarak blobları karşıya yüklemeyi, listelemeyi ve silmeyi öğrendiniz. Ayrıca blob depolama kapsayıcısı oluşturmayı ve silmeyi de öğrendinsiniz.
Öğreticiler, örnekler, hızlı başlangıçlar ve diğer belgeler için şu adresi ziyaret edin:
- Daha fazla bilgi edinmek için bkz. JavaScript için Azure Blob depolama istemci kitaplığı.
- Blob depolama örnek uygulamalarını görmek için Azure Blob depolama istemci kitaplığı v12 JavaScript örneklerine geçin.