Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Blobstore API memungkinkan aplikasi Anda menyajikan objek data, yang disebut blob, dengan ukuran yang jauh lebih besar dari ukuran yang diizinkan untuk objek dalam layanan Datastore.
Blob berguna untuk menyajikan file besar, seperti file video atau gambar, dan untuk
memungkinkan pengguna mengupload file data berukuran besar. Blob dibuat dengan mengupload file melalui permintaan HTTP. Biasanya, aplikasi Anda akan melakukannya dengan menampilkan
formulir yang berisi kolom upload file kepada pengguna. Saat formulir dikirimkan, Blobstore akan membuat blob dari konten file dan menampilkan referensi tersembunyi
ke blob, yang disebut kunci blob,yang nantinya dapat digunakan untuk menyajikan blob. Aplikasi dapat menyajikan nilai blob lengkap sebagai respons terhadap permintaan pengguna, atau dapat membaca nilai secara langsung menggunakan antarmuka seperti file streaming.
Memperkenalkan Blobstore
App Engine mencakup layanan Blobstore, yang memungkinkan aplikasi menyajikan objek data yang hanya dibatasi oleh jumlah data yang dapat diupload atau didownload melalui satu koneksi HTTP. Objek ini disebut nilai Blobstore atau blob.
Nilai Blobstore ditayangkan sebagai respons dari pengendali permintaan dan dibuat sebagai upload melalui formulir web. Aplikasi tidak membuat data blob secara langsung; sebagai gantinya,
blob dibuat secara tidak langsung, oleh formulir web yang dikirimkan atau permintaan POST HTTP lainnya.
Nilai Blobstore dapat ditayangkan kepada pengguna, atau diakses oleh aplikasi dalam streaming seperti file, menggunakan Blobstore API.
Untuk meminta pengguna mengupload nilai Blobstore, aplikasi Anda harus menyajikan formulir web dengan kolom upload file. Aplikasi ini membuat URL tindakan formulir dengan memanggil Blobstore API. Browser pengguna mengupload file langsung ke
Blobstore melalui URL yang dibuat. Blobstore kemudian menyimpan blob, menulis ulang permintaan untuk memuat kunci blob, dan meneruskannya ke jalur dalam aplikasi Anda.
Pengendali permintaan di jalur tersebut dalam aplikasi Anda dapat melakukan pemrosesan
formulir tambahan.
Untuk menyajikan blob, aplikasi Anda menetapkan header pada respons keluar, dan App Engine mengganti respons tersebut dengan nilai blob.
Blob tidak dapat diubah setelah dibuat, meskipun dapat dihapus. Setiap
blob memiliki catatan info blob yang sesuai dan tersimpan di datastore, yang memberikan
detail tentang blob, seperti waktu pembuatan dan jenis kontennya. Anda dapat menggunakan
kunci blob untuk mengambil catatan info blob dan mengkueri propertinya.
Aplikasi dapat membaca nilai Blobstore sebagian dalam satu waktu menggunakan panggilan API.
Ukuran bagian dapat mencapai ukuran maksimum dari nilai yang ditampilkan API.
Ukuran ini kurang dari 32 megabyte, yang direpresentasikan di Python oleh
konstanta google.appengine.ext.blobstore.MAX_BLOB_FETCH_SIZE.
Aplikasi tidak dapat membuat atau mengubah nilai Blobstore, kecuali melalui file yang diupload oleh pengguna.
Menggunakan Blobstore
Aplikasi dapat menggunakan Blobstore untuk menerima file besar sebagai upload dari pengguna dan menyajikan file tersebut. File disebut blob setelah diupload. Aplikasi
tidak mengakses blob secara langsung, sebagai gantinya, aplikasi bekerja dengan blob melalui entity info blob
(diwakili oleh BlobInfo class) di Datastore.
Pengguna membuat blob dengan mengirimkan formulir HTML yang menyertakan satu atau beberapa kolom input file.aplikasi Anda memanggil
blobstore.create_upload_url()
untuk mendapatkan tujuan (tindakan) formulir ini, dengan meneruskan fungsi jalur URL pengendali di aplikasi Anda. Saat pengguna mengirimkan formulir, browser pengguna akan mengupload file yang ditentukan langsung ke Blobstore. Blobstore menulis ulang permintaan pengguna dan menyimpan data file yang diupload, mengganti data file yang diupload dengan satu atau beberapa kunci blob yang sesuai, lalu meneruskan permintaan yang ditulis ulang ke pengendali di jalur URL yang Anda berikan ke
blobstore.create_upload_url()
.
Pengendali ini dapat melakukan pemrosesan tambahan berdasarkan kunci blob.
Aplikasi ini dapat membaca bagian dari nilai Blobstore menggunakan antarmuka streaming yang mirip file. Lihat class BlobReader.
Mengupload blob
Untuk membuat dan mengupload blob, ikuti prosedur berikut:
1. Membuat URL upload
Panggil
blobstore.create_upload_url()
untuk membuat URL upload untuk formulir yang akan diisi pengguna,
dengan meneruskan jalur aplikasi yang akan dimuat saat POST formulir selesai.
Ada versi asinkron, create_upload_url_async(). Fungsi ini memungkinkan kode aplikasi Anda tetap berjalan sementara Blobstore membuat URL upload.
2. Membuat formulir upload
Formulir harus menyertakan kolom upload file, dan enctype formulir harus ditetapkan ke
multipart/form-data. Saat pengguna mengirimkan formulir, POST akan ditangani oleh
Blobstore API, yang membuat blob. API ini juga membuat catatan info untuk
blob dan menyimpan catatan di Datastore, lalu meneruskan permintaan yang ditulis ulang ke
aplikasi Anda di jalur yang diberikan sebagai kunci blob.
3. Menerapkan pengendali upload
Dalam pengendali ini, Anda dapat menyimpan kunci blob bersama model data aplikasi lainnya. Kunci blob itu sendiri tetap dapat diakses dari entity info blob di
Datastore. Perhatikan bahwa setelah pengguna mengirimkan formulir dan pengendali Anda dipanggil,
blob telah disimpan dan info blob ditambahkan ke Datastore. Jika aplikasi Anda tidak ingin menyimpan blob, Anda harus segera menghapus blob agar tidak menjadi telantar.
Untuk semua aplikasi Flask, semua panggilan yang dilakukan ke metode di
class BlobstoreUploadHandler
memerlukan request.environ dictionary (permintaan yang diimpor dari
modul flask). Jika aplikasi Anda adalah aplikasi WSGI tanpa framework web, Anda menggunakan
parameter environ dalam metode get_uploads().
Saat Blobstore menulis ulang permintaan pengguna, bagian MIME dari file yang diupload akan dikosongkan, dan kunci blob ditambahkan sebagai header bagian MIME.
Semua kolom dan bagian formulir lainnya akan dipertahankan dan diteruskan ke pengendali upload.
Jika Anda tidak menentukan jenis konten, Blobstore akan mencoba menyimpulkannya dari ekstensi file. Jika tidak ada jenis konten yang dapat ditentukan, blob yang baru dibuat akan
ditetapkan sebagai jenis konten application/octet-stream.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-03-06 UTC."],[],[]]