Pendahuluan
Unggah dan kelola file di penyimpanan cloud dengan optimisasi otomatis.
Informasi lebih lanjut tentang antarmuka pengguna modul ini https://doc.oneentry.cloud/docs/attributes/types/#File
🎯 Apa yang dilakukan modul ini?
Modul FileUploading memungkinkan Anda untuk mengunggah, mengambil, dan menghapus file di penyimpanan cloud OneEntry - gambar, PDF, video, dokumen, jenis file apa pun - dengan optimisasi gambar otomatis dan pengiriman CDN.
Anggap saja ini sebagai manajer penyimpanan cloud Anda - Anda mengunggah file sekali, dan OneEntry menyimpannya, mengoptimalkan gambar secara otomatis, dan menyajikannya dengan cepat melalui CDN.
🚀 Memulai dengan Cepat
Inisialisasi modul dari defineOneEntry:
const { FileUploading } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Unggah file dan baca tautan unduhan yang dikembalikan:
// upload() returns an ARRAY of uploaded files (IUploadingReturn[]).
const uploaded = await FileUploading.upload(file, {
entity: "product",
id: 123,
type: "image",
compress: true,
});
const { filename, downloadLink, size } = uploaded[0];
console.log(downloadLink); // use in <img>, <a>, <video>
Kemudian, hapus berdasarkan nama file (entitas/id menyelesaikan folder penyimpanan):
await FileUploading.delete(filename, { entity: "product", id: 123 });
✨ Konsep Utama
Apa itu Pengunggahan File?
Pengunggahan file adalah menyimpan file di penyimpanan cloud dan mendapatkan tautan CDN permanen kembali:
- Unggah - kirim
FileatauBlobke cloud OneEntry - Penyimpanan - file disimpan, diorganisir berdasarkan
entity→id→filename - CDN - pengiriman cepat dari server yang dekat dengan pengguna
- Optimisasi - gambar dapat dikompresi dan diubah ukurannya secara otomatis
- URL -
downloadLinkdalam respons adalah tautan permanen
Jenis file yang didukung
Jenis file apa pun diterima. Hanya gambar yang dioptimalkan secara otomatis; yang lainnya disimpan apa adanya.
| Kategori | Jenis File | Optimisasi Otomatis |
|---|---|---|
| Gambar | JPG, PNG, GIF, WebP, SVG | Ya (ubah ukuran, kompres) |
| Dokumen | PDF, DOC, DOCX, XLS, XLSX | Tidak (disimpan apa adanya) |
| Video | MP4, MOV, AVI, WebM | Tidak (disimpan apa adanya) |
| Arsip | ZIP, RAR, TAR, GZ | Tidak (disimpan apa adanya) |
| Lainnya | Jenis file apa pun | Tidak (disimpan apa adanya) |
📋 Apa yang Perlu Anda Ketahui
Parameter Unggah
upload(file, fileQuery?) mengambil file ditambah objek kueri opsional:
await FileUploading.upload(file, {
entity: 'product', // Storage folder name (optional, any string)
id: 123, // Entity ID (optional)
type: 'image', // Folder/type hint (optional, any string)
width: 1920, // Max width for images (optional)
height: 1080, // Max height for images (optional)
compress: true, // Compress images (optional)
});
file—FileatauBlobyang akan diunggah (dari input atau drag-drop)entity— nama folder bebas dalam penyimpanan (misalnyaproduct,page,user,editor— contoh, bukan enum tetap)id— ID entitas untuk mengaitkan filetype— string petunjuk folder/tipe bebaswidth/height— dimensi maksimum untuk gambar (rasio aspek dipertahankan)compress— aktifkan kompresi gambar
Respons Unggah
upload() menghasilkan array dari IUploadingReturn. Setiap item memiliki:
{
filename: "uploads/abc123-photo.jpg", // Filename with relative path
downloadLink: "https://cdn.../photo.jpg", // CDN URL
size: 204800, // File size in bytes
contentType: "image/png", // MIME type
}
downloadLink— gunakan URL ini dalam tag<img>,<a>,<video>filename— simpan untuk menghapus file nantisize— ukuran file dalam byte
Optimisasi Gambar
Untuk gambar, Anda dapat melewatkan width, height, dan compress. Rasio aspek selalu dipertahankan — gambar diubah ukurannya agar sesuai dalam batas yang diberikan, tidak pernah direnggangkan.
Menghapus File
Kirim nama file terlebih dahulu; entitas/id/tipe berada di objek kueri opsional yang menyelesaikan folder penyimpanan:
await FileUploading.delete('abc123-photo.jpg', {
entity: 'product',
id: productId,
});
Mengambil File
getFile(id, type, entity, filename, template?) mengembalikan objek Response mentah (tidak diparsing JSON) — panggil .blob(), .arrayBuffer(), dll. sesuai kebutuhan.
Membangun File dari URL
createFileFromUrl(url, filename, mimeType?) mengambil sumber daya jarak jauh dan mengembalikan File browser, berguna untuk mengunggah kembali gambar jarak jauh yang sudah ada.
📊 Tabel Referensi Cepat - Metode
| Metode | Apa yang Dilakukan | Kapan Digunakan |
|---|---|---|
| upload() | Unggah file ke penyimpanan cloud | Pengguna mengunggah gambar, dokumen |
| getFile() | Ambil file (raw Response) | Unduh file yang disimpan |
| delete() | Hapus file dari penyimpanan | Hapus file lama |
| createFileFromUrl() | Bangun File dari URL jarak jauh | Impor gambar jarak jauh sebelum diunggah |
Semua metode bersifat publik — tidak memerlukan otorisasi pengguna.
❓ Pertanyaan Umum (FAQ)
Jenis file apa yang bisa saya unggah?
Jenis file apa pun. Hanya gambar yang dioptimalkan secara otomatis (ubah ukuran/kompres); file lainnya disimpan apa adanya.
Apa ukuran file maksimum?
Tergantung pada batasan rencana OneEntry Anda. Optimalkan gambar sebelum diunggah untuk menjaga ukuran tetap rendah.
Apakah file disimpan secara permanen?
Ya — file tetap ada sampai Anda menghapusnya dengan FileUploading.delete(). File tetap di penyimpanan bahkan jika entitas terkait dihapus, jadi bersihkan secara eksplisit.
Bisakah saya mendapatkan daftar semua file yang diunggah untuk suatu entitas?
Tidak langsung melalui SDK ini. Lacak nilai filename yang Anda dapatkan dari upload() (misalnya simpan di database Anda) untuk mengelola file nanti.
Bisakah saya mengubah ukuran gambar ke dimensi yang tepat?
Tidak — rasio aspek selalu dipertahankan. width/height mendefinisikan kotak batas di mana gambar disesuaikan, mencegah distorsi.
🎓 Praktik Terbaik
- Validasi jenis file dan ukuran sebelum memanggil
upload(). - Kirim
entity/idagar file terorganisir berdasarkan entitas di penyimpanan. - Aktifkan
compressuntuk gambar web. - Simpan
filenameyang dikembalikan agar Anda dapatdelete()file nanti. - Bersihkan file yang tidak terpakai secara eksplisit — mereka bertahan setelah penghapusan entitas.
- Tangani kesalahan unggah dengan try/catch dan periksa bentuk pengembalian
IError.
🔗 Dokumentasi Terkait
- Modul Produk - Unggah gambar produk
- Modul FormsData - Bidang file diunggah melalui modul ini saat pengiriman
- Modul Pengguna - Unggah foto profil pengguna
- Modul Halaman - Unggah file konten halaman