Tags
file, PHP, upload, upload file, Yii2
This tutorial need extension mdmsoft/yii2-upload-file. Follow the intruction to install.
After installation done, create controller
and action
// in controller public function actionCreate() { $model = new DynamicModel([ 'nama', 'file_id' ]); // behavior untuk upload file $model->attachBehavior('upload', [ 'class' => 'mdm\upload\UploadBehavior', 'attribute' => 'file', 'savedAttribute' => 'file_id' // coresponding with $model->file_id ]); // rule untuk model $model->addRule('nama', 'string') ->addRule('file', 'file', ['extensions' => 'jpg']); if ($model->load(Yii::$app->request->post()) && $model->validate()) { if ($model->saveUploadedFile() !== false) { Yii::$app->session->setFlash('success', 'Upload Sukses'); } } return $this->render('upload',['model' => $model]); }
Then in view upload.php
<?php use yii\helpers\Html; use yii\widgets\ActiveForm; /* @var $this yii\web\View */ ?> <div> <?php $form = ActiveForm::begin([ 'options' => [ 'enctype' => 'multipart/form-data'] ]); ?> <?= $form->field($model, 'nama'); ?> <?= $form->field($model, 'file')->fileInput(); ?> <?php if ($model->file_id): ?> <div class="form-group"> <?= Html::img(['/file', 'id' => $model->file_id]) ?> </div> <?php endif; ?> <div class="form-group"> <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div>
Its how its look like
con322 said:
If i was to use this for allowing a user to add an avatar or something would I just add user_id (FK) to the table where the file information?
Could you maybe add a section if you have time/chance of integrating it into the signup form or update user form?
Thanks
LikeLike
Misbahul D Munir said:
In table
user
, add fieldavatar_id
. Then in modelUser
, add behaviorEverytime you want to show avatar of current user, you can do like this
LikeLiked by 1 person
xxxxxxxxxxxxxxxxxxxxxxxxxxxx said:
kok itu ada bacaan “NO FILE SELECTED” itu sebenernya berhasil apa engga, coba deh screen satu2. Kalo gak kerepotan!!!
LikeLike
Misbahul D Munir said:
Berhasil kok.
Itu bukan pesan error. Itu cuma menandakan bahwa belum ada file yg dipilih di file field
LikeLike
Me said:
Dear Pak Misbahul,
Saya juga mengalami hal yang sama. Ketika pilih gambar muncul judul gambar yang akan diupload, namun jika klik Submit muncul pesan no file selected dan file yang tadi sudah dipilih menjadi terhapus kembali. Field lainnya masih ada, hanya bagian gambar yang kosong dan bertanda required merah. Saya cek db juga datanya tidak masuk. Mohon pencerahannya, terima kasih.
LikeLike
Misbahul D Munir said:
Kalau setelah disubmit, file field-nya jadi
no selected file
, gak ada cara utk mengatasinya. Ada sih… tapi agak rumit. Saran saya gunakan extension yg dibikin oleh kartik.Kalau tanda required jadi merah, kemungkinan file-nya memang tdk terupload. Coba pastikan opti ini di
ActiveForm
LikeLike
Me said:
Wah terima kasih atas respon cepatnya Pak.
Boleh Saya minta email bapak? Saya baru dalam YII2, jujur masih kesulitan dalam memahami polanya.
LikeLike
Misbahul D Munir said:
misbahuldmunir@gmail.com
Walau ane lebih nyaranin untuk nanya di group. Lebih banyak yg bisa membantu di sana.
LikeLike
Saepul Millah said:
maaf mas, mau tanya untuk urutan installnya sendiri harus ngikut semua proses install yang ada di github baru lanjut yang ada di blog, atau cuma nginstall extensi saja baru ngikut yang ada di blog ini? soalnya saya masih belum ngerti urutan proses nya
LikeLike
Misbahul D Munir said:
Ikut yang di github aja sudah cukup harusnya. Yang di sini cuma contoh. Kalau ada yang gak paham, tanya aja.
LikeLike
Saepul Millah said:
mohon maaf mas, saya mau tanya lagi soalnya saya bener-bener belum ngerti konsepnya sendiri soalnya saya baru belajar yii2 dari nol, saya ikutin proses yang ada di github, setelah install extensi lanjut migrate database, proses yang ke-3 pasang controllermap di main.php yang ada diantara common/frontend/backend, setelah itu tambah function behaviors pada model, yang saya bingung misalkan modelnya sendiri saya buat dari database uploaded_file hasil migrate, untuk view controller saya edit dari hasil crud model yang tadi dibuat, yang saya bingung proses penempatan di bagian view dan controller nya mas, mohon maaf jika saya banyak bertanya mas
LikeLike
Misbahul D Munir said:
Tidak perlu bikin model untuk tabel
uploaded_file
. Behavior itu digunakan untuk model yang ada link ke file.Misal punya tabel
user
yang ada avatar-nya.user(id,username,email,avatar_id)
.field
avatar_id
itu isinya adalah id file yang diupload. untuk melihat file yang sudah diupload tsb menggunakan controllermdm\\upload\\FileController
.Intinya, upload file -> simpan di suatu tempat -> catat info ttg file tersebut di db -> untuk mengakses file tersebut, gunakan id yg diperoleh.
Cara penggunaannya semua sudah ada di github. Baca pelan-pelan.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
upload.php
hosted with ❤ by GitHub
LikeLike
joenmarz said:
Master Munir, misalnya field avatar_id sudah ditambahkan ke tabel user, apakah perlu setting foreign key ke tabel uploaded_file ?
LikeLike
Misbahul D Munir said:
Tidak perlu
LikeLike
Dika Andhana said:
Mas langkah2 untuk menginstall extensi itu gimna?,saya sudah punya file sendiri dan pengen saya beri upload tapi saya belum faham langkah2nnya
LikeLike
Misbahul D Munir said:
Lewat terminal (atau command line). mausk ke direktori aplikasi ketik
Untuk install secara manual. download ekstensi lewat link ini. Ekstrak ke sembarang folder. Masuk ke file congigurasi aplikasi, tambahkan config
Selanjutnya ikuti langkah-langkah yang ada di github
LikeLike
ansori said:
Mantaabz Bro thank u
LikeLike
Saepul Millah said:
mau tanya mas, saya baru install lagi aplikasi baru pas download extensi mdmsoft/yii2-upload-file “~1.1” composernya error, saya coba manual tambahkan di composer.json dan update ternyata masih sama error, yang jadi masalah composernya atau di gitnya, soalnya saya cek koneksi lancar-lancar aja http://prntscr.com/6mw06t
LikeLike
gilang dhiki said:
mas tanya ini kalau mutiple upload gimana ya caranya?hehehe
LikeLike
Misbahul D Munir said:
gak bisa
LikeLike
deppanamacca said:
ijin copy ya. thx
LikeLike
Ron said:
Mas yang ada di github itu, create tablenya dibuat dimana ya? maksudnya di folder mananya. Kalo :
controllerMap’ => [
‘file’ => ‘mdm\upload\FileController’, // use to show or download file ],
itu diletakin dimana? apa di backend/config/main.php? Terimakasih sebelumnya.
LikeLike
Misbahul D Munir said:
di situ juga bisa.
Untuk create tablenya, pake migration.
LikeLike
Julian said:
kalau satu form banyak input buat upload file konfigurasinya gmn ya mas. ? misal cover, logo. .di behaviors penulisannya gmn ya. ? thanks
LikeLike
Brett said:
Why is it so hard to find a good yii2 extension that supports updating?? Users want to be able to do C.R.U.D operations.
LikeLike
suci said:
pak saya newbie, maaf sebelumnya saya mau nanya. saya udah ngikutin perintah yang digithub kalo diviewsnya non object, itu kenapa yaa ? terimakasih sebelumnya
LikeLike
Misbahul D Munir said:
non object gimana maksudnya?
LikeLike
arie said:
assalamu’alaikum..
apa kabar master..!
klo mau crop dulu sblum nyimpan gambarnya gmana ya?
sy udah coba2 makai ext. bupy7 (yii2-widget-cropbox) , tp blum dpt solusinya..
thanks master
LikeLike
Misbahul D Munir said:
Hmm… itu case yg berbeda. Mungkin kartik punya solusinya…
ext ini bekerja di sisi server, pasca upload
LikeLike
diosandy007 said:
assalamu’alaikum..
saya mau tanya bagaimana dengan multiple upload . soalnya saya sudah berhasil mengikuti tutorialnya tapi hanya bisa mengupload 1 file saja
terima kasih
LikeLike
Misbahul D Munir said:
sayangnya gak suport untuk multiple file 😀
LikeLike
diosandy007 said:
oh begitu mas. jadi untuk multiple apakah ada saran kalo bisa minta tutorialnya master
Thanks
LikeLike
Novanti Tobing said:
Pak saya menggunakan store procedure di yii2. Apakah cara di atas sama untuk upload gambar juga?
LikeLike
Misbahul D Munir said:
stored procedure itu database kan?
gak ada hubungannya dg upload file.
Dan ya… ini bisa dipakai untuk upload gambar.
LikeLike
Novanti Tobing said:
Saya buat seperti ini tapi belum berhasil. Mohon bantuannya Pak
public function actionCreate() {
$connection = \Yii::$app->db;
$transaction = $connection->beginTransaction();
$model = new Inventory();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$command = $connection->createCommand(‘{call usp_M_Inventory#InsertData(:ID_Item,:Item_Name, :ID_Mom,:Item_Price,:ID_Inv_Category,:Item_PIC1,:Item_PIC2,:Item_active,:User)}’);
$ID_Item = $model->ID_Item;
$Item_Name = $model->Item_Name;
$ID_Mom = $model->ID_Mom;
$Item_Price = $model->Item_Price;
$ID_Inv_Category = $model->ID_Inv_Category;
LikeLike
Misbahul D Munir said:
kok beda ya dengan ekstensiku. seingatku di ext-ku gak ada method
$model->upload()
LikeLike
Sandy Prayoga said:
mas mau tanya saya kan pake ekstension ini . ketika di localhost file berhasil di upload dan muncul. tapi ketika di hosting ke idhostinger file kok tidak bisa muncul ya. pdahal setting databse sudah saya samakan dengandirektori hosting saya
ada solusinya kah?
LikeLike
Sandy Prayoga said:
maaf mau tanya master, setelah saya hosting kok . gambar tidak muncul ya mas padahal di localhost muncul. say asudah menyesuaikan letak file di phpmyadminnya. terima kasih. saya hosting di idhostinger, hostingnya seperti gak memberikan akses ke image yang ada di root folder
upload image lokasi saya di /public_html/common/upload/../…jpg
LikeLike
Santhika Adi Fitriawan said:
untuk pembatasan tipe file yang bisa di upload bisa di set dimana?
LikeLike
Misbahul D Munir said:
pake validator di modelnya
LikeLike
ariyadi said:
mas mau tanya setelah di upload bisa ga di download lagi
LikeLike
Misbahul D Munir said:
bisa.
setelah setting controllerMap, maka link downloadnya adalah
path/to/app/index.php?r=file/download&id={id_file}
LikeLike
Santhika Adi Fitriawan said:
bagaimana cara nya untuk membatasi tipe file dan besar file yang di upload?
LikeLike
Misbahul D Munir said:
repost https://mdmunir.wordpress.com/2014/10/19/yii2-simple-way-to-upload-and-save-file/comment-page-1/#comment-280
LikeLike
Santhika Adi Fitriawan said:
maaf dopost…..
untuk sistem penamaan nya bisa di bikin jadi manual?
LikeLike
Misbahul D Munir said:
Aku gak benar-benar yakin apa yg kamu perlukan dari ekstensi ini. Mengapa gak pake native fitur upload file punyanya Yii aja?
LikeLike
Gerry said:
Hi thanks this is a great tutorial – I was wondering is there a way to have a drag and drop file upload widget with progress indicator too?
LikeLike
hasby cs said:
cara upload 2 file gimana mas?
misalkan untuk upload document dan foto
LikeLike
Jaydeep Rana said:
what will be the url of the page where we can show the option of file upload.
LikeLike
Andra said:
Mas mau nanya, bisa gak dalam 1 halaman ada 2 form browse/upload, tp tetap tombol submit nya hanya 1?
LikeLike
Misbahul D Munir said:
kalau 2 form satu button jelas gak bisa. kalau satu button untuk 2 file input bisa.
mungkin pertanyaannya, mengapa pake 2 form?
LikeLike
desy said:
makasih informasinya sangat bermanfaat 🙂
LikeLike