Apakah masih ada yang ingat dengan artikel saya yang berjudul Mudahnya Mengubah Nama File Saat Diupload di Aplikasi Web dari PHPMaker? Buat yang sudah lupa atau belum tahu sama sekali, artikel itu membahas bahwa betapa mudah, cepat, dan menyenangkannya kita sebagai Web Developer dapat mengubah nama file yang diupload dari Aplikasi Web yang dibangun dengan PHPMaker. Kita cukup hanya menambahkan sedikit kode PHP saja melalui server event Row_Inserting.
Artikel tersebut memang baru membahas hanya untuk satu file yang diupload. Pertanyaan selanjutnya adalah, bagaimana jika file yang diupload tersebut ternyata lebih dari satu? Artinya, ketika Pengguna Aplikasi Web mengupload beberapa file sekaligus dalam satu kesempatan, maka kita sebagai Web Developer seharusnya pun dapat menangani proses penamaan file untuk seluruh file yang sudah diupload itu juga.
Seperti yang kita ketahui, sejak versi 11, PHPMaker sudah memungkinkan Web Developer untuk menambahkan fitur upload beberapa file sekaligus. Jadi, dalam hal ini nama dari beberapa file yang diupload tersebut akan disimpan dalam sebuah Field untuk satu Record (bukan ke dalam beberapa Record).
Untuk itu, pastikan kita sudah mengeset field (misalnya) Nama_File, sebagai Field yang akan menampung nama file, agar menggunakan tipe File Upload pada panel Edit Tag dari bagian/tab Fields di project PHPMaker.
Selanjutnya, untuk mengimplementasikan Multiple File Upload ini, maka kita cukup hanya mengaktifkan pengaturan yang bernama Multiple yang terdapat di bawah kelompok pengaturan File Upload pada panel Edit Tag masih di bawah tab Fields dari project PHPMaker tadi.
Selain itu, ada hal lain yang perlu dipertimbangkan jika kita ingin menerapkan Multiple File Upload tersebut. Apa itu? Jawabannya adalah panjang (length) dari Field yang akan menyimpan nama file tersebut. Pastikan kita menyediakan panjang yang diperkirakan cukup menampung beberapa nama file yang baru tadi. Artinya, jika misalnya Anda memperkirakan panjang nama file dari beberapa file yang sudah diubah namanya tadi tidak terbatas, maka alangkah baiknya menggunakan tipe text atau memo.
Oke, beberapa hal tadi adalah persyaratan yang harus kita perhatikan sebelum mengimplementasikan Multipe File Upload tadi. Sekarang saatnya kita ke bagian yang paling mengasyikkan, seperti biasanya. Mari kita kembali ke dalam project PHPMaker.
Meskipun PHPMaker sudah menyediakan pengaturan Multiple File Upload tersebut, bukan berarti kita sebagai Web Developer dapat memerintahkan agar PHPMaker dapat mengubah nama file beberapa file yang diupload tadi. Mengapa? Karena bagaimana mungkin PHPMaker bisa tahu bahwa file-file tersebut ingin diubah nama filenya sesuai dengan format nama file yang kita kehendaki, jika kita sebagai Web Developer tidak menulis kode PHP yang terkait dengan hal ini?
Untuk itu, maka kita perlu menulis sedikit kode (juga), mirip seperti pada artikel yang sudah disebutkan di atas tadi. Katakanlah kita menggunakan nama field Nama_File untuk menyimpan nama file, dan menggunakan bantuan field Kantor untuk mengubah nama file yang baru tadi. Maka kita cukup menambahkan sedikit kode PHP berikut ke dalam server event Row_Inserting, sehingga selengkapnya menjadi seperti ini:
// Row Inserting event function Row_Inserting($rsold, &$rsnew) { // Enter your code here // To cancel, set return value to FALSE $NewFiles = explode(EW_MULTIPLE_UPLOAD_SEPARATOR, $rsnew["Nama_File"]); $FileCount = count($NewFiles); for ($i = 0; $i < $FileCount; $i++) { if ($NewFiles[$i] <> "") { $file = $NewFiles[$i]; $ekstensi_file = substr(strtolower(strrchr($file, ".")), 1); $kantor = $rsnew["Kantor"]; $file = "File_".$kantor."_".($i+1).".".$ekstensi_file; $NewFiles[$i] = $file; } } $FileName = implode(EW_MULTIPLE_UPLOAD_SEPARATOR, $NewFiles); $rsnew['Nama_File'] = $FileName; return TRUE; }
Seperti biasa, saatnya untuk membahas kode di atas. Pertama sekali kita mengambil setiap nama file dari object Recordset $rsnew pada field Nama_File, yaitu $rsnew[“Nama_File”], dan menampungnya ke dalam variabel array yang bernama $NewFiles dengan menggunakan function explode(). Setelah itu, kita menghitung jumlah file menggunakan function count terhadap variabel $NewFiles tadi, dan menampungnya ke dalam variabel $FileCount.
Tahap selanjutnya adalah melakukan perulangan (looping) menggunakan blok for { … } untuk memproses elemen array dari variabel $NewFiles tadi. Di dalam blok perulangan tadi, ambil setiap nama file yang lama, lalu tampung ke dalam variabel $file. Lalu, pastikan kita mengambil tipe atau extension file yang bertalian dan menampungnya ke dalam variabel $ekstensi_file.
Karena kita akan menggunakan komponen data kantor dari field Kantor, maka kita juga mengambil data kantor berdasarkan field tersebut. Setelah itu, maka kita mengubah nama file yang lama menjadi yang baru dengan menambahkan awalan (prefix) File_, diikuti dengan data kantor, lalu diikuti lagi dengan indeks atau nomor urut file yang dimulai dari 1, dan terakhir jangan lupa ditutup dengan data ektensi file yang bertalian. Setelah itu, masukkan kembali setiap file yang baru tadi ke dalam variabel array $NewFiles.
Di luar blok perulangan tadi, maka pastikan kita menggabungkan kembali menjadi satu dengan menggunakan function implode() lalu menampung hasilnya ke dalam variabel $FileName. Dan terakhir, kita menampung nilai tersebut ke dalam field $rsnew[“Nama_File”].
Sebuah business-logic yang sangat sederhana sekali, namun dampak atau hasilnya sangat luar biasa, hehe… 🙂
Jangan lupa, untuk men-generate semua file script menggunakan PHPMaker seperti biasa, lalu setelah itu cobalah untuk meng-upload beberapa file sekaligus dalam sebuah Record yang Anda tambahkan di table terkait tadi. Seharusnya setelah proses penyimpanan Record yang baru tadi berhasil, Anda akan melihat file-file yang sudah di-upload tadi namanya sudah sesuai dengan format nama file yang kita tentukan di atas.
Bisa disimpulkan bahwa teknik yang kita gunakan di artikel ini sebenarnya mirip dengan teknik yang sudah dijelaskan pada artikel di atas tadi. Perbedaannya hanyalah di bagian penanganan pemisahan beberapa file yang awalnya oleh sistem digabung, menjadi dipecah (explode) untuk diproses menjadi menggunakan nama file yang baru dengan format yang bisa kita tentukan sendiri, dan setelah itu menggabungkannya kembali (implode) untuk dimasukkan kembali ke dalam field Nama_File pada object recordset $rsnew.
Bisakah Anda bayangkan sekarang, jika Anda harus menulis kode untuk mengimplementasikan fitur Multiple File Upload tersebut di Aplikasi Web yang Anda bangun secara manual, berapa ratus/ribuan baris kode yang harus Anda ketik? Selain itu, berapa lama waktu yang harus Anda habiskan hanya untuk mengimplementasikan fitur yang sebenarnya bisa dihasilkan dengan sangat cepat menggunakan bantuan PHPMaker? Masihkah Anda tetap bertahan menggunakan cara-cara yang kuno dan tidak efektif itu?
O iya, kode di atas sudah saya coba untuk fitur Upload File to Folder dan hasilnya berhasil dengan mulus dan lancar. Untuk itu, Anda bisa membaca referensi tutorial dari menu Help PHPMaker yang berjudul Tutorial – File Upload to Folder. Untuk yang Upload to Database, belum saya coba, silahkan Anda coba sendiri, dan kabarkan hasilnya melalui kolom Komentar di bawah artikel ini.
See? Betapa mudah, cepat, dan menyenangkan sekali menggunakan PHPMaker, bukan? PHPMaker memang kagak ada lawannya, jek! 😀
Tinggalkan Balasan