Upload Files to Azure Cosmos Db Blob Container
Browser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Border untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Mengunggah gambar ke blob Azure Storage
Gunakan aplikasi React sisi klien untuk mengunggah file gambar ke blob Azure Storage menggunakan paket npm @azure/storage-blob Azure Storage.
Pekerjaan pemrograman TypeScript dilakukan untuk Anda, tutorial ini berfokus pada penggunaan lingkungan Azure lokal dan jarak jauh dengan sukses dari dalam Visual Studio Code dengan ekstensi Azure.
- Kode sampel
- Dokumentasi Referensi Azure Hulk Storage
Arsitektur dan fungsionalitas aplikasi
Artikel ini mencakup beberapa tugas Azure teratas untuk pengembang JavaScript:
- Jalankan aplikasi React/TypeScript secara lokal dengan Visual Studio Code
- Membuat sumber daya Azure Blob Storage dan mengonfigurasi untuk pengunggahan file
- Mengonfigurasi CORS
- Membuat token tanda tangan akses bersama (SAS)
- Mengonfigurasi kode untuk pustaka klien SDK Azure untuk menggunakan token SAS untuk mengautentikasi ke layanan
Aplikasi React sampel, tersedia di GitHub, terdiri dari elemen-elemen berikut:
- React di-host di port 3000
- Skrip pustaka klien Azure SDK untuk diunggah ke blob Penyimpanan
one. Siapkan lingkungan pengembangan
- Akun pengguna Azure dengan langganan aktif. Buat akun gratis.
- Node.js LTS dengan NPM, pengelola paket Node.js yang diinstal ke mesin lokal Anda.
- Visual Studio Lawmaking diinstal ke komputer lokal Anda.
- Ekstensi Visual Studio Code:
- Azure Resource
- Azure Storage - digunakan untuk melihat sumber daya Storage
- Azure Static Spider web Apps - digunakan untuk membuat dan menyebarkan aplikasi React ke Azure
2. Buat fork dan kloning aplikasi sampel
-
Buka URL sampel GitHub ini di browser web:
https://github.com/Azure-Samples/js-e2e-browser-file-upload-storage-hulk
-
Pilih Fork untuk membuat fork Anda sendiri dari proyek sampel ini. Fork GitHub Anda sendiri diperlukan untuk menyebarkan sampel ini ke Azure sebagai aplikasi spider web statis.
-
Pilih tombol Kode, lalu salin URL Klon.
-
Di concluding bash, kloning repositori bercabang Anda, ganti
Supersede-WITH-YOUR-ACCOUNT-Proper name
dengan nama akun GitHub Anda:git clone https://github.com/REPLACE-WITH-YOUR-Business relationship-Name/js-e2e-browser-file-upload-storage-blob
-
Ubah ke direktori baru dan buka Visual Studio Code.
cd js-e2e-browser-file-upload-storage-blob && code .
3. Instal dependensi dan jalankan proyek lokal
-
Di Visual Studio Code, buka final bash terintegrasi, Ctrl + Shift + `, dan jalankan perintah berikut untuk menginstal dependensi sampel.
npm install
-
Di jendela concluding yang sama, jalankan perintah untuk menjalankan aplikasi web.
npm start
-
Buka browser web dan gunakan URL berikut untuk melihat aplikasi spider web di komputer lokal Anda.
http://localhost:3000/
Jika Anda melihat aplikasi spider web sederhana di browser Anda dengan teks yang tidak dikonfigurasi Penyimpanan, Anda telah berhasil dengan bagian tutorial ini.
-
Hentikan kode dengan Ctrl + C di concluding Visual Studio Lawmaking.
4. Buat sumber daya Storage dengan ekstensi Visual Studio
-
Navigasikan ke ekstensi Azure Storage. Klik kanan pada langganan lalu pilih
Create Storage Account...
. -
Ikuti petunjuk menggunakan tabel berikut untuk memahami cara membuat sumber daya Penyimpanan Anda.
Properti Nilai Masukkan nama unik secara global untuk aplikasi web baru. Masukkan nilai seperti fileuploaddemo
, untuk nama sumber daya Penyimpanan Anda.Nama unik ini adalah nama sumber daya Anda yang digunakan di bagian berikutnya. Gunakan hanya karakter dan angka, hingga 24 panjangnya. Anda memerlukan nama akun ini untuk digunakan nanti.
-
Saat proses pembuatan aplikasi selesai, pemberitahuan akan muncul dengan informasi tentang sumber daya baru.
Hasilkan token SAS sebelum mengonfigurasi CORS.
-
Di ekstensi Visual Studio Lawmaking untuk Storage, klik kanan sumber daya lalu pilih Buka di Portal. Ini membuka portal Azure ke sumber daya Storage Anda yang tepat.
-
Buka bagian Keamanan + jaringan dan pilih Tanda tangan akses bersama.
-
Konfigurasikan token SAS dengan pengaturan berikut.
Properti Nilai Layanan yang diizinkan Blob Jenis sumber daya yang diizinkan Layanan, Kontainer, Objek Izin yang diizinkan Membaca, menulis, menghapus, membuat daftar, menambahkan, membuat Izin pembuatan versi blob Dicentang Mengizinkan izin indeks blob Baca/Tulis dan Filter harus diperiksa Tanggal/waktu mulai dan akhir Terima tanggal/waktu mulai dan atur waktu tanggal akhir 24 jam di masa mendatang. Token SAS Anda hanya bagus selama 24 jam. Hanya untuk HTTPS Dipilih Tingkat perutean yang disukai Dasar Kunci Penandatanganan key1 dipilih -
Pilih Buat SAS dan string koneksi.
-
Segera salin token SAS. Anda tidak akan dapat mencantumkan token ini jadi jika Anda tidak menyalinnya, Anda harus membuat token SAS baru.
6. Atur nilai Penyimpanan dalam file .env
Token SAS digunakan saat kueri dibuat ke sumber daya berbasis cloud Anda.
-
Buat nama file
.env
di root proyek. -
Tambahkan dua variabel yang diperlukan dengan nilai penyimpanannya:
REACT_APP_STORAGESASTOKEN= REACT_APP_STORAGERESOURCENAME=
React membuat file statis dengan variabel-variabel ini.
-
Jika token dimulai dengan tanda tanya, hapus
?
. File kode menyediakan?
untuk Anda sehingga Anda tidak membutuhkannya dalam token.
7. Konfigurasikan CORS untuk sumber daya Azure Storage
Konfigurasikan CORS untuk sumber daya Anda sehingga kode React sisi klien dapat mengakses akun penyimpanan Anda.
-
Saat masih berada di portal Microsoft Azure, di bagian Pengaturan, pilih Berbagi sumber daya (CORS).
-
Konfigurasikan CORS layanan Blob sebagai peragaan dalam gambar. Pengaturan dijelaskan di bawah gambar.
Properti Nilai Asal yang diperbolehkan *
Metode yang diperbolehkan Semua kecuali patch. Header yang diizinkan *
Header yang diekspos *
Usia maks 86400 -
Pilih Simpan di atas pengaturan untuk menyimpannya ke sumber daya. Kode tidak memerlukan perubahan apa pun untuk bekerja dengan pengaturan CORS ini.
8. Jalankan proyek secara lokal untuk memverifikasi koneksi ke akun Storage
Token SAS dan nama akun penyimpanan Anda diatur dalam file src/azure-storage-blob.ts
, sehingga Anda siap untuk menjalankan aplikasi.
-
Jika aplikasi tidak berjalan, mulai lagi:
npm outset
-
Buka URL berikut di browser:
http://localhost:3000
-
Pilih gambar dari folder
images
yang akan diunggah lalu pilih tombol Unggah!. -
Kode klien front-finish React memanggil ke ./src/azure-storage-blob.ts untuk mengautentikasi ke Azure, lalu membuat Kontainer Penyimpanan (jika belum ada), lalu mengunggah file ke kontainer tersebut.
9. Sebarkan aplikasi spider web statik ke Azure
-
Di Visual Studio Code, pilih penjelajah Azure.
-
Jika Anda melihat jendela pop-up yang meminta Anda melakukan perubahan, jangan lakukan hal ini. Sampel harus siap digunakan tanpa perubahan.
Untuk memutar kembali perubahan, di Visual Studio Code, pilih ikon Kontrol Sumber di bilah aktivitas. Kemudian pilih setiap file yang diubah dalam daftar Perubahan, dan pilih ikon Buang perubahan.
-
Klik kanan pada nama langganan, lalu pilih Buat Aplikasi Web Statik (Tingkat Lanjut).
-
Ikuti perintah untuk menyediakan informasi berikut:
Perintah Masukkan Masukkan nama untuk aplikasi spider web statik baru. Buat nama unik untuk sumber daya Anda. Misalnya, Anda dapat melakukan prepend pada nama Anda ke nama repositori seperti, upload-file-to-storage
.Pilih grup sumber daya untuk sumber daya baru. Gunakan grup sumber daya yang Anda buat untuk sumber daya penyimpanan Anda. Memilih SKU Pilih SKU costless untuk tutorial ini. Jika Anda sudah memiliki sumber daya Aplikasi Web Statis gratis yang digunakan, pilih tingkat harga berikutnya. Pilih preset build untuk mengonfigurasi struktur proyek default. Pilih React. Memilih lokasi kode aplikasi Anda /
- Ini menunjukkan file package.json berada di root repositori.Memilih lokasi kode Azure Functions Anda Terima nilai default-nya. Meskipun sampel ini tidak menggunakan API, Anda dapat menambahkannya nanti. Masukkan jalur output build Anda... build
Ini adalah jalur dari aplikasi ke file statis (dihasilkan).
Pilih lokasi untuk sumber daya baru. Pilih wilayah yang dekat dengan Anda. -
Setelah proses selesai, popular-upward notifikasi akan ditampilkan. Pilih Lihat/Edit Alur Kerja.
10. Tambahkan rahasia Azure Storage ke rahasia GitHub
-
Di browser web, kembali ke fork GitHub Anda dari proyek sampel untuk menambahkan dua rahasia dan nilai-nilainya:
https://github.com/YOUR-GITHUB-Business relationship/js-e2e-browser-file-upload-storage-blob/settings/secrets/actions
11. Konfigurasikan aplikasi web statis untuk terhubung ke sumber daya penyimpanan
Edit alur kerja dan rahasia GitHub untuk terhubung ke Azure Storage.
-
Di Visual Studio Lawmaking, buka file YAML alur kerja
.github/workflows
dan tambahkan dua variabel lingkungan penyimpanan setelah bagianwith
ke bagianbuild_and_deploy_job
.jobs: build_and_deploy_job: if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.issue.action != 'closed') runs-on: ubuntu-latest name: Build and Deploy Job steps: - uses: actions/checkout@v2 with: submodules: true - name: Build And Deploy id: builddeploy uses: Azure/static-web-apps-deploy@v1 with: azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_123456 }} repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) activity: "upload" ###### Repository/Build Configurations - These values can exist configured to match your app requirements. ###### # For more information regarding Static Spider web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig app_location: "/" # App source lawmaking path api_location: "api" # Api source code path - optional output_location: "build" # Built app content directory - optional ###### End of Repository/Build Configurations ###### env: # Add together environs variables here REACT_APP_STORAGESASTOKEN: ${{secrets.REACT_APP_STORAGESASTOKEN}} REACT_APP_STORAGERESOURCENAME: ${{secrets.REACT_APP_STORAGERESOURCENAME}}
Ini menarik rahasia untuk proses pembuatan.
-
Di Visual Studio Code, pilih Kontrol Sumber, Ctrl + Shift + M, lalu pilih ikon penambahan untuk menambahkan file *.yml yang diubah.
-
Masukkan komentar untuk komit Anda seperti
Adding Storage secrets
. -
Dorong ke fork GitHub Anda dengan memilih ikon Sinkronkan perubahan pada bilah status.
-
Di jendela pop-up untuk mengonfirmasi apakah Anda ingin mendorong dan menarik dari repositori jarak jauh Anda, pilih OK.
Jika Anda mendapatkan kesalahan pada langkah ini, checkout remote git Anda untuk memastikan Anda mengkloning fork Anda:
git remote -v
. -
Dorongan ini memicu buat dan sebarkan baru untuk aplikasi web statis Anda.
12. Verifikasi pekerjaan buat dan sebarkan selesai
-
Di browser web, kembali ke fork GitHub Anda dari proyek sampel.
-
Pilih Tindakan, lalu pilih tindakan Azure Static Spider web Apps CI/CD.
-
Pilih Pekerjaan Buat dan Sebarkan untuk menyaksikan proses selesai.
13. Gunakan aplikasi web statis yang disebarkan Azure
-
Di Visual Studio Lawmaking, klik kanan aplikasi web Statis Anda dari penjelajah Azure dan pilih
-
Di jendela browser web baru, pilih file dan unggah file.
Memecahkan masalah koneksi lokal ke akun Penyimpanan
Jika Anda menerima kesalahan atau file Anda tidak diunggah ke kontainer, periksa hal berikut:
- Buat ulang token SAS Anda, pastikan token Anda dibuat pada tingkat sumber daya Penyimpanan dan bukan tingkat kontainer. Salin token baru ke dalam kode di lokasi yang benar.
- Periksa apakah string token yang Anda salin ke dalam kode tidak berisi
?
(tanda tanya) di awal string. - Verifikasi pengaturan CORS Anda untuk sumber daya Penyimpanan Anda.
Fungsionalitas tombol Unggah
File TypeScript src/App.tsx
disediakan sebagai bagian dari pembuatan aplikasi tersebut dengan create-react-app. File telah dimodifikasi untuk menyediakan tombol pemilihan file dan tombol unggah dan kode pendukung untuk menyediakan fungsi itu.
Kode yang terhubung ke kode Azure Blob Storage disorot. Panggilan untuk uploadFileToBlob
menampilkan semua hulk (file) dalam kontainer sebagai daftar datar. Daftar itu ditampilkan dengan fungsi DisplayImagesFromContainer
.
// ./src/App.tsx import React, { useState } from 'react'; import Path from 'path'; import uploadFileToBlob, { isStorageConfigured } from './azure-storage-blob'; const storageConfigured = isStorageConfigured(); const App = (): JSX.Chemical element => { // all blobs in container const [blobList, setBlobList] = useState<cord[]>([]); // current file to upload into container const [fileSelected, setFileSelected] = useState(null); // UI/form direction const [uploading, setUploading] = useState(false); const [inputKey, setInputKey] = useState(Math.random().toString(36)); const onFileChange = (issue: any) => { // capture file into state setFileSelected(outcome.target.files[0]); }; const onFileUpload = async () => { // set UI setUploading(truthful); // *** UPLOAD TO AZURE STORAGE *** const blobsInContainer: string[] = await uploadFileToBlob(fileSelected); // gear up UI for results setBlobList(blobsInContainer); // reset country/form setFileSelected(null); setUploading(simulated); setInputKey(Math.random().toString(36)); }; // display form const DisplayForm = () => ( <div> <input type="file" onChange={onFileChange} key={inputKey || ''} /> <button type="submit" onClick={onFileUpload}> Upload! </button> </div> ) // display file proper name and paradigm const DisplayImagesFromContainer = () => ( <div> <h2>Container items</h2> <ul> {blobList.map((detail) => { render ( <li key={item}> <div> {Path.basename(item)} <br /> <img src={particular} alt={item} tiptop="200" /> </div> </li> ); })} </ul> </div> ); return ( <div> <h1>Upload file to Azure Hulk Storage</h1> {storageConfigured && !uploading && DisplayForm()} {storageConfigured && uploading && <div>Uploading</div>} <hour /> {storageConfigured && blobList.length > 0 && DisplayImagesFromContainer()} {!storageConfigured && <div>Storage is not configured.</div>} </div> ); }; consign default App;
Upload file ke blob Azure Storage dengan pustaka klien SDK Azure
Kode untuk mengunggah file ke Azure Storage adalah framework-doubter. Karena kode dibuat untuk tutorial, pilihan dibuat untuk kesederhanaan dan pemahaman. Pilihan ini dijelaskan; Anda harus meninjau proyek Anda sendiri untuk penggunaan, keamanan, dan efisiensi yang disengaja.
Sampel membuat dan menggunakan kontainer dan file yang dapat diakses publik. Jika Anda ingin mengamankan file Anda di proyek Anda sendiri, Anda memiliki banyak lapisan tempat Anda dapat mengontrolnya mulai dari memerlukan autentikasi keseluruhan ke sumber daya Anda hingga izin yang sangat spesifik pada setiap objek blob.
Dependensi dan variabel
File TypeScript azure-storage-blob.ts memuat dependensi, dan menarik variabel yang diperlukan dengan variabel lingkungan atau string berkode keras.
Variabel | Deskripsi |
---|---|
sasToken | Token SAS yang dibuat dengan portal Azure telah ditambahkan dengan ? . Hapus sebelum mengaturnya dalam variabel sasToken Anda. |
container | Nama kontainer di penyimpanan Hulk. Anda dapat menganggap ini setara dengan folder atau direktori untuk sistem file. |
storageAccountName | Nama sumber daya Anda. |
// THIS IS SAMPLE CODE ONLY - Not MEANT FOR Product Utilize import { BlobServiceClient, ContainerClient} from '@azure/storage-blob'; const containerName = `tutorial-container`; const sasToken = process.env.REACT_APP_STORAGESASTOKEN; const storageAccountName = procedure.env.REACT_APP_STORAGERESOURCENAME;
Membuat klien Penyimpanan dan mengelola langkah-langkah
Fungsi uploadFileToBlob
adalah fungsi utama dari file. Ini membuat objek klien untuk layanan Penyimpanan, kemudian membuat klien ke objek kontainer, mengunggah file, lalu mendapatkan daftar semua hulk dalam kontainer.
const uploadFileToBlob = async (file: File | null): Promise<string[]> => { if (!file) return []; // become BlobService = notice `?` is pulled out of sasToken - if created in Azure portal const blobService = new BlobServiceClient( `https://${storageAccountName}.hulk.cadre.windows.net/?${sasToken}` ); // get Container - full public read access const containerClient: ContainerClient = blobService.getContainerClient(containerName); await containerClient.createIfNotExists({ access: 'container', }); // upload file await createBlobInContainer(containerClient, file); // go listing of blobs in container render getBlobsInContainer(containerClient); };
Mengunggah file ke hulk
Fungsi createBlobInContainer
mengunggah file ke kontainer, menggunakan kelas BlockBlobClient, metode uploadData. Jenis konten harus dikirim dengan permintaan jika Anda berniat menggunakan fungsi browser, yang tergantung pada jenis file, seperti menampilkan gambar.
const createBlobInContainer = async (containerClient: ContainerClient, file: File) => { // create blobClient for container const blobClient = containerClient.getBlockBlobClient(file.proper noun); // set mimetype every bit determined from browser with file upload command const options = { blobHTTPHeaders: { blobContentType: file.type } }; // upload file await blobClient.uploadData(file, options); }
Mendapatkan daftar blob
Fungsi getBlobsInContainer
mendapatkan daftar URL, menggunakan kelas ContainerClient, metode listBlobsFlat, untuk hulk dalam kontainer. URL dibuat untuk digunakan sebagai src
dari tampilan gambar dalam HTML: <img src={item} alt={particular} height="200" />
.
// return list of blobs in container to display const getBlobsInContainer = async (containerClient: ContainerClient) => { const returnedBlobUrls: string[] = []; // get list of blobs in container // eslint-disable-next-line for look (const blob of containerClient.listBlobsFlat()) { // if image is public, merely construct URL returnedBlobUrls.push( `https://${storageAccountName}.blob.core.windows.cyberspace/${containerName}/${blob.name}` ); } return returnedBlobUrls; }
Membersihkan sumber daya
Di Visual Studio Code, gunakan penjelajah Azure untuk Grup Sumber Daya, klik kanan grup sumber daya Anda lalu pilih Hapus.
Ini menghapus semua sumber daya dalam grup, termasuk sumber daya Aplikasi web Penyimpanan dan Statis Anda.
Langkah berikutnya
Jika Anda ingin melanjutkan aplikasi ini, pelajari cara menyebarkan aplikasi ke Azure untuk hosting dengan salah satu pilihan berikut:
- Mengunggah sebagai aplikasi web statis
- Unggah ke sumber daya aplikasi web menggunakan ekstensi kode Visual Studio untuk layanan Aplikasi
- Mengunggah aplikasi ke VM Azure
- Dokumentasi Azure Blob Storage
- @azure/storage-blob
- Paket NPM
- Dokumentasi rujukan
- Aplikasi web Azure Static
Source: https://docs.microsoft.com/id-id/azure/developer/javascript/tutorial/browser-file-upload-azure-storage-blob
0 Response to "Upload Files to Azure Cosmos Db Blob Container"
Post a Comment