[Yii framework] Cara Upload File

Sebelum kita bahas cara membuat fungsi upload file ke server, saya akan jelaskan bahwa bagaimana alur file yang kita upload akan disimpan di dalam database. Okeh, pada postingan ini,  file yang kita upload ke server tidaklah masuk ke dalam database, yang kita masukkan di dalam databse adalah PATH dari file tersebut. Ada cara dimana kita bisa menyimpan suatu file ke dalam database kita yaitu dengan menggunakan type BLOB(Binary Large Object). Dimana file yang akan disimpan ke dalam database akan di konversi terlebih dahulu ke dalam Binary file dan disimpan ke dalam database kita. Memang lebih simpel, tapi menyimpan nya langsung ke dalam database tidaklah baik. Karena menurut pengalaman saya, saat file nya ditampilkan file ny berubah :D. Contoh, saya pernah upload gambar, dan ketika gambar ny mau saya tampilin gambar ny berubah :D.

 

Okeh, udah panjang lebar kita bahas. Mari kita bahas cara coding ny di yii…

Pada models tempat penyimpanan path nya, beri batasan pada rules nya agar hanya data-data bertipe tertentu yang bisa di upload. Berikut cara membuat rules nya:

 public function rules()
    {
        return array(
            array('namaAttributFile', 'file', 'types'=>'jpg, gif, png, pdf'),
        );
    }

tinggal anda masukkan saja tipe file apa saja yang mau anda support untuk upload file nya..

nah, setelah itu kita buat di controller ny perintah untuk melakukan upload file nya. Pada contoh kali ini, saya melakukan upload file pada action “create”, begini contoh code nya:

 public function actionCreate()
    {
        $model=new NamaModel;
        if(isset($_POST['NamaModel']))
        {
            $model->attributes=$_POST['NamaModel'];
            $model->namaAttribute=CUploadedFile::getInstance($model,'namaAttribute');
            if($model->save())
            {
                $model->namaAttribute->saveAs('path/to/localFile');
                $this->redirect(array('view','id'=>$model->id));
            }
        }
        $this->render('create', array('model'=>$model));
    }

Nah, anda tinggal lakukan setting path posisi tempat anda ingin menyimpan file yang anda upload dan contoh di atas sudah bisa menjalankan perintah upload file nya…

Beberapa permasalahan klasik pada upload file adalah dimana kadang kita ingin mengubah nama file yang kita upload sesuai dengan kemauan kita. Dan biasa ny kita juga ingin path dari file yang kita simpan otomatis akan langsung mengarah ke path project kita.. Okeh untuk permasalahan seperti itu, silahkan anda rubah code pada action “create” nya menjadi seperti berikut:

	public function actionCreate()
	{
		$model=new NamaModel;

		if(isset($_POST['NamaModel']))
		{
			$model->attributes=$_POST['NamaModel'];
			$simpanSementara=CUploadedFile::getInstance($model,'namaAttribut');
			if($model->save())
			{
				$simpanSementara->saveAs(Yii::app()->basePath . 
                                              '/../namaFolder/' . $model->id.'.pdf');
				$this->redirect(array('view','id'=>$model->id));
			}
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}

Penjelasan:

Pada contoh diatas, saya menyimpan file yang di upload ke dalam foleder : Project/namaFolder. Kunci nya ada pada kode ini:

 $simpanSementara->saveAs(Yii::app()->basePath . '/../namaFolder/' . $model->id.'.pdf');

Pada code tsb, terlihat bahwa kita melakukan penyimpanan file di dalam Project kita, dan di dalam folder “namaFolder”. Selain itu juga kita mengubah nama file yang kita upload sesuai dengan nama attribut “id” nya, dan kita simpan nama nya bertipe “.pdf”. Silahkan anda konfigurasi sendiri sesuai dg kemauan anda yak 😀

 

Eits.. belum selesai proses ny… kita masih harus edit tampilannya dulu gan 😀 …

Sekarang silahkan buka view nya, dan buka file “form.php”. Di bagian atas form tersebut, ubah code ny menjadi seperti berikut:

<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'laporan-form',
	'enableAjaxValidation'=>false,
        'htmlOptions'=>array('enctype'=>'multipart/form-data'),
)); ?>

Dan untuk merubah control “namaAttribut” agar nanti tampilannya kita tinggal klik dan langsung terbuka form yang menyuruh kita memilih folder, maka rubah code nya dari seperti ini:

<?php echo $form->textField($model,'namaAttribute',array('size'=>50,'maxlength'=>50)); ?>

Menjadi seperti ini:

<?php echo $form->fileField($model,'namaAttribute',array('size'=>50,'maxlength'=>50)); ?>

Selesai…

Silahkan anda coba langsung…

Semoga membantu 😀

168 Responses to [Yii framework] Cara Upload File

  1. klinsman says:

    gan, ane dah nyoba cara uploadnya, tpi kog kluar erro keg gini yah,
    move_uploaded_file(/travel/images/12.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory

  2. sabitzhabit says:

    folder tempat agan mau simpen file uda tersedia gan?
    Bisa kasih liat codinganny ga gan?

  3. klinsman says:

    controller:
    if(isset($_POST[‘MasterPaket’]))
    {
    $model->attributes=$_POST[‘MasterPaket’];
    $model->foto=CUploadedFile::getInstance($model,’foto’);
    if($model->save())
    {
    $model->foto->saveAs(‘travel/images/’.$model->id_masterpaket.’.jpg’);
    $this->redirect(array(‘view’,’id’=>$model->id_masterpaket));
    }
    }
    waktu create masuk ke db..
    tpi kluar error
    move_uploaded_file(/travel/images/12.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory
    kenapa ya??
    trus ane liad di view nya cman ada nama gambarnya doang gan..
    gk ada gambarnya

  4. sabitzhabit says:

    $model->foto->saveAs(‘travel/images/’.$model->id_masterpaket.’.jpg’)

    file ny bener agan simpen di dalem folder controller/travel/images nya gan?
    file nya ke simpen ga ke folder ny gan?

  5. klinsman says:

    filenya ane masukkan di htdocs/travel/images..
    filenya gk ke simpan gan…
    knpa yah??
    maap nih.. baru pake yii..
    ^^

  6. sabitzhabit says:

    oh, berrti path nya harus agan rubah gan. Kalo dari coding ini:
    $model->foto->saveAs(‘travel/images/’.$model->id_masterpaket.’.jpg’)

    ntu arti ny agan mau simpen data ny di controller/travel/images/namaFile.jpg.

    Btw, travel itu nama project nya ya gan??
    Kalo iya, berrti agan rubah path ny jadi
    $model->foto->saveAs(Yii::app()->basePath . ‘/../images/’ . $model->id_masterpaket.’.jpg);

    Jangan lupa folder images ny pastikan udah ada ya gan…

  7. klinsman says:

    ohh…
    sudah bisa nih gan..
    trus skarang aku mau nampilkan gambarnya gmn yah??
    ohh iya, gan punya referensi gk, view 2table dalam 1 form??
    maap sebelumnya ngerepotin..

  8. sabitzhabit says:

    buat nampilin tinggal agan arahin path ny ke id_masterpaket.’.png’, ‘DORE’, array(“width”=>150)); ?>

    btw, yg di atas belum tentu bener ya gan path ny, cz ane ga tahu pasti struktur folder agan 😀

    Di blog ane ada gan cara input 2 tabel dalam 1 form : https://sabitlabscode.wordpress.com/2011/06/13/2-model-1-form-pada-yii-framework/
    tapi belum untuk nampilin gan. Coba cari2 di web ny yiiframework,com gan .. Klo nggak tengah malem deh ntar ane posting di blog..

  9. klinsman says:

    buat nampilkan nya itu taruh dmn ya gan??
    _view.php ato dmn??
    ane kan pke xampp gan..
    nah struktur foldernya gini gan..
    htdocs/travel/images…
    iya gan, ane pernah coba juga.. tapi kga bisa..
    wahahhaa..
    mknya ane pending dlo..

  10. sabitzhabit says:

    ga cuma edit di view ny aja gan. Di controller ny juga harus dikirim nilai yg mau di tampilin..
    Jadi ntar render ny 2 model gan di controller ny..

    Lumayan panjang sih gan, ntar ane posting aja gan..

  11. sabitzhabit says:

    tuh uda ane posting gan..
    semoga membantu 😀

  12. klinsman says:

    gan ane dah buat yg di _view.php keg gini source nya
    getAttributeLabel(‘foto’)); ?>:
    <!–foto); ?>–>
    id_masterpaket), array(‘view’, ‘id’=>$data->id_masterpaket.’.jpg’, ‘DORE’,’width’=>150)); ?>

    bner gk nih gan??
    trus yg di controllernya keg gini gan?soalnya msh bingung cara render 2 model
    public function actionView($id)
    {
    $detail=new MasterPaket;
    $this->render(‘view’,array(
    ‘model’=>$this->loadModel($id),
    ‘detail’=>$detail->foto,
    ));
    }
    sorry gan masih nubie..
    T_T

  13. sabitzhabit says:

    sebelumnya gan, kalo agan mau edit tampilan buat “public function actionView($id)”, itu yg agan edit bukan “_view.php” gan, tapi “view.php” nya.. “_view.php” itu digunakan untuk tampilan index.php..

    yg render 2 model itu untuk kasus yg agan bilang mau nampilin 2 model dalam 1 form gan. Kalo emang mau lebih jelas nya agan bisa lihat di https://sabitlabscode.wordpress.com/2011/06/21/view-2-model-1-form%e2%80%a6-pada-yii-framework%e2%80%a6/

  14. SkyLine says:

    ohh gtu ya gan..
    ane coba dlo yah…
    trima kasih banyak2 ya gan..
    hahaha…

  15. Pingback: [Yii Framework]Delete dan Update File « Sabitlabscode

  16. p-man says:

    maaf ni gan, boleh tanya ga, saya upload foto udah berhasil, tapi pinginnya field foto nya itu ndak required n mau tanya juga cara nampilinnya gimana ya gan??.,
    makasih n maaf gan sebelumnya ..

  17. sabitzhabit says:

    agan rubah aja gan controller yang “actionCreate” nya jadi kayak gini:

    if(isset($_POST[‘File’]))
    {
    $model->attributes=$_POST[‘File’];

    $models;

    if(strlen(trim(CUploadedFile::getInstance($model,’file’))) > 0)
    {
    $models=CUploadedFile::getInstance($model,’file’);
    $model->file=Yii::app()->basePath . ‘/../data/’ . $model->id.’.pdf’;
    }
    if($model->save())
    {
    if(strlen(trim($model->file)) > 0)
    {
    $path=Yii::app()->basePath . ‘/../data/’ . $model->id.’.pdf’;
    $models->saveAs($path);
    }
    $this->redirect(array(‘view’,’id’=>$model->id));
    }
    }

  18. Pingback: [Yii Framework] Upload File not Required « Sabitlabscode

  19. Pingback: [Yii Framework] Membuat Slider « Sabitlabscode

  20. tanya ni gan. kalau filenya tipena banyak nulisnya kayak apa ya gan? kan di tutorialnya langsung ditulis .pdf => hanya satu dong. gimana ya gan?

  21. waduh gan kenapa path ane gak bisa ya?
    Fatal error: Call to a member function saveAs() on a non-object in C:\xampp\htdocs\…\protected\controllers\DownController.php on line 93

    path nya kog ndak bisa ya gan? kenapa nich gan?

  22. dah bisa gan path nya. tinggal nyoba ngeliatin. makasih gan! ane coba lagi yang nampilin ya gan! salam kenal gan!

  23. sabitzhabit says:

    kalo masalah pertama, agan bisa dapetin extension file yg di upload dg cara pake “getExtensionName()” bisa dlihat di: http://www.yiiframework.com/doc/api/1.1/CUploadedFile/.
    Masalah kedua itu berrti blum ke tangkep gan file nya, tapi dah selesai yak 😀

  24. cangka says:

    Kalo upload imagenya ke database gimana???

  25. cangka says:

    Udah dicoba,,, tapi g’ berhasil,, file upload yang dipilih g’ pernah kebaca.. Jadi waktu mau masukin ke database file yang dipilih masih g’ ada gitu,,.. Bisa bikin tutorialnya ga’??

  26. sabitzhabit says:

    ada pesen error ny ga gan? kalo tutorial lagi g sempet skrg gan, mngkin lusa ane coba..

  27. cangka says:

    G’ ada sama sekali errornya..,, Ya udah ditunggu ya..

  28. sabitzhabit says:

    waduh, ane uda kotak-katik pake BLOB. Bisa masuk ke database gan, tapi waktu di download file nya rusak..
    emang kenapa agan mau pake BLOB gan? cz setau kalo pake BLOB itu emang ada resiko file ny bisa rusak waktu di conver ke binary/sebaliknya..

  29. fatihah says:

    Alhamdulillah.. thanks a lot.. it helps.. =)

  30. pram says:

    salam kenal gan…..aq dah nyoba uploadnya….berhasil……tp kok nama file nya gak kesimpen di database……….kira kira proses apanya ya yang kurang…..mohon bantuanya….thanks

  31. sabitzhabit says:

    bisa coba di post code di controller ny gan?

    • andy says:

      berhubung saya dari lampung saya panggil kiyay sabit aja ya , gini yay tutorial diatas kan hanya apabila dalam satu form ada satu file yang ingin di upload kalau di tempat saya ada dua field dalam satu form yang harus di upload itu gimana ya ? mohon pencerahan nya

  32. pram says:

    ini code ane…..

    public function actionCreate()
    {
    $model=new Pegawai;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST[‘Pegawai’]))
    {
    $model->attributes=$_POST[‘Pegawai’];
    $simpanSementara=CUploadedFile::getInstance($model,’foto’);
    if($model->save())

    $simpanSementara->saveAs(Yii::app()->basePath .
    ‘/../images/fotoguru/’ .foto.’.jpg’);

    $this->redirect(array(‘view’,’id’=>$model->id));
    }

    $this->render(‘create’,array(
    ‘model’=>$model,
    ));
    }

    ….ntu……file yang ada di dalam atribut foto kok gak ikut ke simpan ea…….
    ane bingung…….kalo pake post ….trus proses simpan ke tabelnya di bagian mana……….mohon bantuannya…..

  33. sabitzhabit says:

    itu d tambahin :
    $model->foto=$simpanSementara;

    sebelum if($model->save()) nya..

  34. pram says:

    saya dah coba sourece nya….hasilnya berhasil.tapi biar yang kesimpan di data base hanya nama file yang di upload saja gimana ya….?cz………source di atas menyimpan semua path nya……..

    \sisplus2\protected/../images/fotoguru/1.jpg

    biar yang tersimpan 1.jpg nya saja….heeeeee ane utak atik kok malah makin bingung…. heee maaf ya gan…..baru pake yii niich…terimaksih..

    terimakasih…..mohon bantuannya…..

    • Devi Rachmawati says:

      itu caranya gmn k pram??
      saya udh nyoba ko ga bisa2 -_-‘
      pertama saya nyoba masuk ke folder tp ga masuk ke db nya,,,
      kedua nyoba malah ga masuk ke dua2nya,,,,
      dari yg udh saya coba diatas sma2 muncul Error 404
      The requested page does not exist.
      Mohon bantuannya 🙂

  35. pram says:

    terima kasih banyak untuk agan2 diatas……..uploadnya dah berhasil nyimpan di database….mohon bimbingannya lebih lanjut……untuk agan sabitzhabit says terimakasih atas bantuannya……hee 😀

  36. sabitzhabit says:

    udah berhasil ya gan? oh okeh deh.. sama2 gan..

  37. Gamma says:

    Agan Sabit boleh request tutor buat upload bulk record dari file .csv, thanks 🙂

  38. sabitzhabit says:

    mksdny bulk record gmana gan? bisa jelasin lebih detail gan??

  39. Gamma says:

    misalnya isi file csv ada 100 baris data yg tiap barisnya ada beberapa field:

    | No | Nama | Alamat | Telepon |
    —————————————
    | 1 | Dina | Depok | 781910 |
    | 2 | Anna | Bekasi | 781919 |
    | 3 | Mira | Bogor | 781991 |
    …dan seterusnya

    Jadi pas di databasenya langsung input 100 row dari data2 di atas gan 😀

  40. sabitzhabit says:

    oh, gtu.. ntar ane coba deh gan..
    klo bisa ane post ntar..

  41. evellyn says:

    mau tny ni,ak uda nyoba script d atas sma persis tp wktu upload knp msh g muncul y?

  42. ga bisa nya gimana gan? ada error ny ga?

  43. gan uploadnya udah berhasil, tp yang ke save d tabel ko bukan path nya ya?
    ane malah ke save nama file nya aja.

  44. memang hanya nama file nya aja gan tutor yang saya buat..
    kalo mau di tampilin semuanya, agan set lagi gan ke path penyimpanannya..

  45. mellmell amelia says:

    kakak sya baru cba yii nih..
    gmna cara nampilin gambar yang ada di database???

  46. coba liat di ebook saya gan.. ada contoh aplikasi nya..
    disana ada contoh nampilin gambarnya..

  47. mellmell amelia says:

    ok yg permasahan pertama mau uploud gambar kluar error gni
    move_uploaded_file(/var/www/html/ta/protected/../foto/22.jpg): failed to open stream: No such file or directory

  48. masalah pertama karena code tidak menemukan direktori/folder yang mbak maksud..

    itu nanti akan kesimpen di dalam folder images nya mbak..

  49. mellmell amelia says:

    mmh..
    mksi kak.. 🙂

  50. fin says:

    gan sy coba buat applikasi kecil2n neh, upload download dokumen,nah..proses uploadnya ga mslh gan,gimana dokumen yg sy upload td bs d download lg?gmn ngdapetin path link d folder aplikasi kt?

  51. path nya simpan di database aja gan.. trus nanti ngambil link nya dari sana..

  52. heriyano says:

    mas sabit aku mau nanya juga nih maklum pemula yii juga..hehe aku kan dah bisa tuh cara uplod image ke dabase , nah gimana mas buat bikin ketika dah di uplod gambar hasil uplodnya itu tampil di viewnya.. tolong bantuaanya mas step by step..

  53. agan bisa lihat di ebook saya.. disana juga udah saya sertain contoh aplikasi jadi nya.. jadi bisa di contoh2 gan..

  54. Rangga says:

    move_uploaded_file(images/logoRetailer/Slide3.JPG) [function.move-uploaded-file]: failed to open stream: Permission denied

    malah muncul kaya gini mas..kenapa ya?

  55. ga diizinin katanya gan.. permision nya mungkin belum di set gan..

  56. emen says:

    gan kalau simpan pake JAppendo, di bagian ini jadi ap y?
    $simpanSementara=CUploadedFile::getInstance($model,’namaAttribut’);

  57. wah, saya belum pernah coba juga gan kalo kayak gitu…

  58. lukman says:

    kalau cara merubah ukuran gambar yang telah di upload gimana ya

  59. wah, saya ga tau juga kalo itu gan..

  60. Noermansyach says:

    gan ane msih nyoba” nih d Yii alias baru kenal :D, langsung aja ke persoalannya, kan ane nyoba buat upload gambar di Yii, gmbarnya sih udah masuk ke db terus udah masuk juga ke directorynya tpi pas mau d tamipilin di Viewnya keluar error kaya gini
    “YiiBase::include(Chtml.php) [yiibase.include]: failed to open stream: No such file or directory”, ane dah utak atik tuh coding d viewnya sambil tnya” bah google tpi msih blom ketemu,, mohon bantuan dong gan…

  61. ada yang salah ketik CHtml jadi Chtml

  62. Noermansyach says:

    ok gan,, alhamdulillah buat simpan dah bisa,, sekarang masalahnya di update sama hapus,, klo saya update gambar jadi rusak trus klo d hapus di directorynya gambar masih tetep ada,,
    kira” itu gmana ya gan..? mohon bantuan lgi gan..

  63. itu cache nya masih kesimpen di browser agan.. di refresh pake ctrl+R aja gan..

  64. repeat says:

    mas,, saya minta link tutorial yang buat nampilin images dari database ke view?? tolong di bantu y gan…

  65. tinggal di arahin aja path dari image nya mas.. di ebook saya contoh aplikasi nya ada kok..

  66. kiki says:

    ka, gmn cara nyimpen nama file nya? klu ngikutin codingan kk, kesimpennya jd id.pdf,,,
    nah aku mw nyimpen dengan nama_file.pdf
    udah nyobain kayak gini:
    $simpanSementara->saveAs(Yii::app()->basePath . ‘/../filePeraturan/’ . $model->nama_file.’.pdf’);
    tp ga bs.

  67. udah bener kok kyak gitu.. emang ga bisa ny knapa?

  68. kiki says:

    ga bisa ka, tetep yg kesimpen id.pdf
    nama_file nya kosong.

  69. kalo kesimpen itu artinya field $model->nama_file kamu mungkin emang punya nilai tersebut.. cz dia ga menghasilkan error berrti ga salah code nya..

  70. youyung14 says:

    gan ane udah berhasil uploadnya..cuma yang mau ane tanyain nie..biar path file locationnya juga bisa kita simpen itu gimana gan??

  71. everlastie says:

    gan,, ane ketemu error kek begini
    CDbCommand failed to execute the SQL statement: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type path: “image.jpg”
    LINE 1: …nama”, “detil”, “image”) VALUES (‘nama’, ‘detil’, ‘image.jpg…
    ^. The SQL statement executed was: INSERT INTO “product” (“nama”, “detil”, “image”) VALUES (:yp0, :yp1, :yp2)

    apa ya yang salah di databasenya? -_-) mohon pencerahannya gan, tenkies
    CREATE TABLE product
    (
    nama character varying(20) NOT NULL,
    detil character varying(100),
    image path,
    CONSTRAINT pk_product PRIMARY KEY (nama)
    )

  72. tipe image nya character varying aja mas..

  73. Satria says:

    Mas sabit gimana cara bikin upload file sekaligus.. pada form saya ada add rownya. itu bagaimana ya?

  74. wah, saya belum pernah coba juga mas…

    Kunjungi Juga Farifam.com untuk tutorial dan forum Yii Framework yang direspon lebih cepat dari di blog ini..

  75. Mifta SP says:

    Mau tanya dong mas,saya masih baru nih
    Gimana cara manggil path dari database buat nampilin gambar yang udah diupload?

    ini sedikit script saya:

    widget(‘zii.widgets.grid.CGridView’, array(
    ‘id’=>’participant-grid’,
    ‘dataProvider’=>$toparticipant->search(),
    //’filter’=>$totraining,
    ’emptyText’=>’Belum ada training pada kategori ini’,
    ‘summaryText’=>”,
    ‘selectableRows’=>2,
    ‘columns’=>array(
    array(
    ‘class’=>’CCheckBoxColumn’,
    ‘id’=>’haha’,
    ),
    array(
    ‘name’=>’Name Participant’,
    ‘type’=>’raw’,
    ‘value’=>’Chtml::link($data->name_participant,array(\’participant/view\’,\’id\’=>$data->idparticipant))’,
    ),
    array(
    ‘name’=>’Gambar’,
    ‘type’=>’raw’,
    ‘value’=>’CHtml::image(\’a/../images/$a.jpg\’, \’DORE\’, array(“width”=>50))’,
    ),
    array(
    ‘class’=>’CButtonColumn’,
    ),

    )
    )); ?>

  76. guruh says:

    mau tanya mas sabit!
    kalo mau nyimpen nama filenya kedalam database gimana ya?
    mksih sebelumnya

  77. indra says:

    Terima banyak mas , untuk tutorial berbahasa Indonesia nya 🙂
    saran saya sih supaya tidak terjadi copy infringement , sampean taruh aja di ilmukomputer.org. Mereka melindungi hak sampean pemilik/ penulis tutorial ini. Sampean akan memiliki hak bila nantinya ini dikomersialkan(tapi biarin free dulu ya mas biar saya puas bacanya ^^v).

    cheers

  78. mas saya uda ikut tutorial diatas kok ada pesan error ‘Property “CFileValidator.0” is not defined.’
    itu kenapa ya

  79. mas saya uda ikutin tutorial di atas tp pas ngesave data tidak kesimpan dan tidak ada pesan error

  80. kok pas saya save malah direct langsung dan gak nyimpen datanya

  81. SIp thanks bro,,
    nah cara biar didatabase namanya jd 1 gmna? kan ke folder namanya jd 1,2,3 dst

  82. mksd nya jadi gmana gan? kalo namanya 1 semua nanti file nya cuma bisa satu gan.

  83. Pingback: [ KOLEKSI ] Tutorial-Tutorial File Upload | phpsabila

  84. Yanz says:

    Gan mau nanya nih
    smua udah sukses ga ada error tapi ko pas mau nimpen datanya ada bacaan cannot be blank
    padahal udah milih gambar
    gmna tuh
    makasih sebelumnya

  85. di validasi nya udah di atur dia type nya file?

  86. Bondan says:

    gan mau nanya dong klo mau ngeluarin file nya gmn? untuk upload nya udh bisa

  87. di kasih sebuah link yang ngarah ke file itu aja gan..

  88. Liia says:

    mas, saya udah coba ikutin tutorial di atas tapi ko pas di simpan malah imagenya ke bacanya kosong 😦

    kira-kira itu kenapa yah

  89. ada pesan error nya gan?

  90. fajar says:

    gan ini kan udah berhasil upload file
    nah gimana kalo misalkan mau download file yang udah di upload ???

  91. di arahin aja langsung link nya gan..

  92. fajar says:

    Bisa Dikasih Tau Gan Gimana Coding nya . hhe

  93. ikutnongrong says:

    udah ketemu ni bos di view.php

    widget(‘zii.widgets.CDetailView’, array(
    ‘data’=>$model,
    ‘attributes’=>array(
    ‘id’,
    ‘nama’,
    ‘alamat’,
    array(
    ‘label’=>’Poto’,
    ‘type’=>’raw’,
    ‘value’=>CHtml::image(‘belajar/../images/’.$model->poto, ‘DORE’,array(“width”=>300)),
    )
    ),
    )); ?>

  94. ikutnongrong says:

    muncul pertanyaan gimna caranya supaya ketika saya menghapus gambar di databes, maka gambar juga ikut terhapus di folder images

  95. ada postingannya saya buat gan..
    pake unlink()

  96. champ says:

    hii gan..
    thx wat tutornya..sangat membantu..
    saya mau bertanya..kalau saya ingin upload file image saya ke directory yang berbeda-beda bagaimana caranya y?
    contoh : ada pecel.png dan jus.png, saya ingin save pecel.png di directory makanan dan jus.png di directory minuman..
    mohon pencerahannya..
    kalau boleh di balas ke email saya juga..mawmawlagi@gmail.com..
    thx a lot gan..

  97. danus says:

    kalo upload video prosesnya gimana gan

  98. hery says:

    gan biar nyimpan ke databasenya id.pdf gmn?, kalo upload file kok yang ke simpen kedatabase nama file aslinya, jadi link downloadnya gak ketemu deh.

    public function actionCreate()
    {
    $model=new SuratKeluar;
    if(isset($_POST[‘SuratKeluar’])){
    $model->attributes=$_POST[‘SuratKeluar’];
    $model->file=CUploadedFile::getInstance($model,’file’);
    $simpanSementara=CUploadedFile::getInstance($model,’file’);
    if($model->save())
    {
    $simpanSementara->saveAs(Yii::app()->basePath .
    ‘/../surat_keluar/’ . $model->id.’.pdf’);
    $this->redirect(array(‘index’));
    }
    }

    $this->render(‘create’,array(
    ‘model’=>$model,
    ));
    }

  99. Pingback: test copy | Blog sudarno

  100. panji says:

    mas Sabit, setelah saya ikuti tutorial di atas,di index.php keluar CException. peringatannya di

    $this->breadcrumbs=array(
    ‘Galeries’,
    );

    padahal saya tidak edit breadcrumbs nya.. bsa di bantu untuk settingnya??

    maklum newbie..

  101. tejo author says:

    jika ingin file gambar di duplicate dan nyimpan di dua directory bagaimana gan? seperti thumb. thanks before. saya udah otak atik kagak sukses2 pake yii extesion juga kaga jalan2.

  102. packet says:

    mau nanya gan file udah kesimpan tp pathnya gk kesimpan di db y?
    kurang ap y gan, trimakasih, salam kenal sebelumnya

    file sy bertipe varchar(100)

    public function actionCreate()
    {
    $model=new Fileext;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST[‘Fileext’]))
    {
    $model->attributes=$_POST[‘Fileext’];
    $simpanSementara=CUploadedFile::getInstance($model,’file’);
    if($model->save())
    {
    $simpanSementara->saveAs(Yii::app()->basePath . ‘/../pdf/’ . $model->suratext.’.pdf’);
    $this->redirect(array(‘view’,’id’=>$model->suratext));
    }

    }

    $this->render(‘create’,array(
    ‘model’=>$model,
    ));
    }

  103. packet says:

    sip gan kemaren udah tak coba2, alhamdulilah bisa dan paham maksud tutorial agan yg ini

  104. yudha says:

    mau tanya gan,
    ini sudah upload file,
    kemudian supaya bisa file yg kita upload dapat di download gimana caranya gan?

  105. gan, tolongin 😥

    ane baca ebook yang membahas pembuatan forum dengan yii,
    ane coba tapi gagal di bagian ini

    if(strlen(trim(CUploadedFile::getInstance($model,’avatar’))) > 0)
    {
    $sss=CUploadedFile::getInstance($model,’avatar’);
    $model->avatar=$model->username.’.’.$sss->extensionName;
    }
    if($model->save())
    {
    if(strlen(trim($model->avatar)) > 0)
    $sss->saveAs(Yii::app()->basePath . ‘/../avatar/’ . $model->avatar);
    $this->redirect(array(‘view’,’id’=>$model->id));
    }

    dengan keterangan

    call_user_func_array() expects parameter 1 to be a valid callback, array must have exactly two members

    mohon pencerahanny, terima kasih 😀

  106. Fatal error: Call to a member function saveAs() on a non-object in D:\xampp\htdocs\pragmainfo\protected\controllers\ProductController.php on line 71
    ini kenapa ya gan? ane newbie gan. mohon bantuannya

  107. ikhsan says:

    gan ane udah buat nih,coba nge create tp file yang di upload nya gk kebaca gmn ya gan

  108. mas mau tanya ini saya baru belajar yii.. ini bikin script mirip sama punyanya mas, tapi pas tombol create nya dipencet g keluar apa-apa atau tombol create nya terkesan g berfungsi . Itu yang salah bagian apanya ya mas? Thanks 🙂

  109. gading says:

    mas cara tampilin gambar yang udah kita upload gimana ya ?
    mohon bantuannya 🙂

  110. Frey says:

    Kakak mau tanya dong, kalo mau buat fitur upload dan download, fllenya uploadnya di simpan di folder di web servernya bagaimana ya?

    Jadi nanti pengennya di define path folder di server, client tinggal connect lalu akses folder di server tsb.

    Mohon pencerahannya kak

  111. Heris says:

    Gan gimana caranya menampilkan data yang di upload sebelum disimpan ke database??
    Mohon dijelaskan ..

  112. joenmarz says:

    Mas sabit, pas dijalanin upload file imagenya gak kesimpen ke folder knapa yak?

    saya punya tabel: tbl_image -> fieldnya: id, filename, title

    rulesnya saya bikin gini: ============================

    public function rules()
    {
    return array(

    array(‘filename’, ‘file’, ‘types’=>’jpg, gif, png, pdf’),

    );
    }

    controllernya: =====================================

    public function actionCreate()
    {
    $model=new Image;

    if(isset($_POST[‘Image’]))
    {
    $model->attributes=$_POST[‘Image’];
    //$model->filename=CUploadedFile::getInstance($model,’filename’);
    $tempSave=CUploadedFile::getInstance($model, ‘filename’);
    if($model->save())
    //$model->filename->saveAs(‘/productimages’);
    $tempSave->saveAs(Yii::app()->basePath . ‘/../productimages/’ . $model->id.’.jpg’);
    $this->redirect(array(‘view’,’id’=>$model->id));
    }

    $this->render(‘create’,array(‘model’=>$model));
    }

    viewnya (_form): ==================================

    beginWidget(
    ‘CActiveForm’,
    array(
    ‘id’ => ‘upload-form’,
    ‘enableAjaxValidation’ => false,
    ‘htmlOptions’ => array(‘enctype’ => ‘multipart/form-data’),
    )
    ); ?>

    labelEx($model,’title’); ?>
    textField($model,’title’,array(‘size’=>45,’maxlength’=>45)); ?>
    error($model,’title’); ?>

    labelEx($model,’filename’); ?>
    fileField($model,’filename’,array(‘size’=>45,’maxlength’=>45)); ?>
    error($model,’filename’); ?>

    isNewRecord ? ‘Simpan’ : ‘Save’); ?>

    endWidget(); ?>
    endWidget(); ?>

  113. Reksi Permadi says:

    Gan klo tipe file nya ada banyak gimana gan ?
    misal .jpg .png .gif ?

  114. Mas numpang nyak aku da ikutin tutor diatas tapi gk ngirim ke database,
    jadi error 404. kira-kira salahnya dimana!

  115. gan ko kalo update datanya ga bisa keupdate itu bagaimana ya?

  116. Ydo says:

    gan ane udah bisa semua, tapi pas mau simpan data validasinya keluar “image cannot be blank” padahal validasinya udah ane setting kaya diatas. mohon pencerahnnya gann 😀

  117. Diah Purnama says:

    mas sabit mau nanya dong. say amau upload avatar, pas saya ganti di controller, action create. error. tulisannya kaya gini. knapa ya? “Parse error: syntax error, unexpected ‘public’ (T_PUBLIC) in C:\xampp\htdocs\proyek3\protected\controllers\UserController.php on line 171”

  118. rahman says:

    gan klo file udah ke simpen di folder..dan skarang mau di tampilkan di data base ,,gmna caranya yaa..

  119. gan ane udah coba kaya source code di atas, tapi pas di save malah muncul “upload cannot be blank” .. itu gimana ya gan ?? terus folder buat nyimpen fotonya itu ditaruh di dlm controller atau di dlm htdocs/project/foldersimpan foto ?? gimana ya gan solusinya ???

    • pastika di form nya sudah di set biar bisa baca upload file, di model juga di cek dan pastikan direktori penyimpanannya uda bener path nya. FOlder nya tarok di luar aja mbak, terserah dimana aja yang penting bener ngarahin path folder nya.

      • reinhard benou says:

        Ngeset biar kebaca di form sama memastikan direktori penyimpanan nya uda bener gimana mas ???

  120. wawan says:

    gan mau nanya kenapa kok ketika update itu tidak terupdate semua fieldnya tapi ketika ada file terupload malah terupdate semua untuk action updatenya? pernah tanpa ngasih upload file kesimpan semua tapi pas ditambahkan file upload malah ga kesimpen semua kecuali ada file yang keupload baru keupdate semua,bingung…. pernah nyoba di safe pas di rule modelnya malah ga kesimpen semuanya? sebenarnya masalahnya dimana ya itu?

  121. damita alfa says:

    admin. saya baru nyoba ke oop nih. dan pake framework nya yii. tapi saya bingung ketika ada perintah “kita bisa merender ke file yg isinya kosong”. itu maksudnya gimana ya min?. maksud render itu gimana?. di tunggu penjelasannya ya. makasih.

  122. reinhard benou says:

    mas saya ada masalh , gk ada error mas cuma itu foto gk masu masuk db saam folder mas.
    saya udah buat begini di form
    dan uda diatur bagian atas nya
    beginWidget(‘CActiveForm’, array(
    ‘id’=>’user-form’,
    ‘enableAjaxValidation’=>false,
    ‘htmlOptions’=>array(‘enctype’=>’multipart/ form-data’),
    )); ?>

    bagian file nya

    labelEx($model,’user_avatar’); ?>
    fileField($model,’user_avatar’); ?>
    error($model,’user_avatar’); ?>

    dan di rules nya
    return array(
    array(‘user_username, user_password, user_email, user_password2, user_verifyCode, user_joindate’, ‘required’,’message’=>'{attribute}Tidak Boleh Kosong’),
    array(‘user_verifyCode’,’captcha’,’allowEmpty’=>!extension_loaded(‘gd’)),
    array(‘user_level_Id’, ‘numerical’, ‘integerOnly’=>true),
    array(‘user_username’, ‘length’, ‘max’=>20),
    array(‘user_password, user_saltpassword, user_email’, ‘length’, ‘max’=>50),
    array(‘user_avatar’, ‘file’, ‘types’=>’gif,png,jpg’),
    array(‘user_Id, user_username, user_password, user_saltpassword, user_email, user_joindate, user_level_Id, user_avatar’, ‘safe’, ‘on’=>’search’),
    );

    lalu di actionCreate nya
    public function actionCreate()
    {
    $model=new User;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST[‘User’])) {
    $model->attributes=$_POST[‘User’];

    echo ‘Username : ‘.$model->user_username.”;
    echo ‘Password : ‘.$model->user_password.”;
    echo ‘Password 2 : ‘.$model->user_password2.”;
    echo ‘Email : ‘.$model->user_email.”;
    echo ‘Tanggal Join :’.$model->user_joindate.”;
    echo ‘Avatar : ‘.$model->user_avatar.”;
    echo ‘Capcta : ‘.$model->user_verifyCode.”;
    $dua=$model->user_password;
    $model->user_saltpassword=$model->generateSalt();
    $model->user_password=$model->hashPassword($dua,$model->user_saltpassword);
    $model->user_level_Id=3;

    $model->user_avatar=CUploadedFile::getInstance($model,’user_avatar’);
    if($model->save())
    {
    $model->user_avatar->saveAs(Yii::app()->basePath . ‘/../user_avatar/’ . $model->user_Id.’.png’);
    $this->redirect(array(‘view’,’id’=>$model->user_Id));
    }
    }

    $this->render(‘create’,array( ‘model’=>$model, ));
    }

    please Bantu Gan….

  123. Terima kasih atas tutorialnya,, sya referensikan kepada rekan saya mengenai upload di framework yiii, dan tutorial ini berjalan dengan mulus. Semoga sukses selalu gan,

  124. chyntia says:

    kalo upload video gimana gan??

Leave a reply to tejo author Cancel reply