[Yii framework] Cara Upload File
June 16, 2011 168 Comments
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 😀
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
folder tempat agan mau simpen file uda tersedia gan?
Bisa kasih liat codinganny ga gan?
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
$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?
filenya ane masukkan di htdocs/travel/images..
filenya gk ke simpan gan…
knpa yah??
maap nih.. baru pake yii..
^^
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…
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..
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..
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..
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..
tuh uda ane posting gan..
semoga membantu 😀
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
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/
ohh gtu ya gan..
ane coba dlo yah…
trima kasih banyak2 ya gan..
hahaha…
okeh gan..
Pingback: [Yii Framework]Delete dan Update File « Sabitlabscode
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 ..
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));
}
}
Pingback: [Yii Framework] Upload File not Required « Sabitlabscode
Pingback: [Yii Framework] Membuat Slider « Sabitlabscode
tanya ni gan. kalau filenya tipena banyak nulisnya kayak apa ya gan? kan di tutorialnya langsung ditulis .pdf => hanya satu dong. gimana ya gan?
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?
dah bisa gan path nya. tinggal nyoba ngeliatin. makasih gan! ane coba lagi yang nampilin ya gan! salam kenal gan!
gimana gan cara benerinnya?
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 😀
Kalo upload imagenya ke database gimana???
mksd ny mau langsung file ny ke database gan? coba cek di http://www.yiiframework.com/wiki/95/saving-files-to-a-blob-field-in-the-database
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’??
ada pesen error ny ga gan? kalo tutorial lagi g sempet skrg gan, mngkin lusa ane coba..
G’ ada sama sekali errornya..,, Ya udah ditunggu ya..
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..
Pengen nyoba2 aja… Bisa kirimin file model, controller n view nya ke email ane g’ bos…???
yg pake BLOB ny gan? boleh, tapi masih error. Walau file nya masuk ke database, tapi saat dibaca file ny rusak.. Kalo mau dkirim, email ny apa gan?
G’ papa bos,, ane udah coba2 tapi g’ berhasil2,,, file yang dipilih tetap g’ kebaca,, dianggap masih belum milih file apa2… Kirim ke cangkaman.id[at]gmail.com aja bos…
sent gan…
Alhamdulillah.. thanks a lot.. it helps.. =)
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
bisa coba di post code di controller ny gan?
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
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…..
itu d tambahin :
$model->foto=$simpanSementara;
sebelum if($model->save()) nya..
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…..
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 🙂
terima kasih banyak untuk agan2 diatas……..uploadnya dah berhasil nyimpan di database….mohon bimbingannya lebih lanjut……untuk agan sabitzhabit says terimakasih atas bantuannya……hee 😀
udah berhasil ya gan? oh okeh deh.. sama2 gan..
Agan Sabit boleh request tutor buat upload bulk record dari file .csv, thanks 🙂
mksdny bulk record gmana gan? bisa jelasin lebih detail gan??
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 😀
oh, gtu.. ntar ane coba deh gan..
klo bisa ane post ntar..
mau tny ni,ak uda nyoba script d atas sma persis tp wktu upload knp msh g muncul y?
ga bisa nya gimana gan? ada error ny ga?
gan uploadnya udah berhasil, tp yang ke save d tabel ko bukan path nya ya?
ane malah ke save nama file nya aja.
memang hanya nama file nya aja gan tutor yang saya buat..
kalo mau di tampilin semuanya, agan set lagi gan ke path penyimpanannya..
kakak sya baru cba yii nih..
gmna cara nampilin gambar yang ada di database???
coba liat di ebook saya gan.. ada contoh aplikasi nya..
disana ada contoh nampilin gambarnya..
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
itu mksudnya kesimpan di mana ya?
saya mau simpan di ta /images
ta : nama projectnya
images : direktorinya
masalah pertama karena code tidak menemukan direktori/folder yang mbak maksud..
itu nanti akan kesimpen di dalam folder images nya mbak..
mmh..
mksi kak.. 🙂
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?
path nya simpan di database aja gan.. trus nanti ngambil link nya dari sana..
bisa kasi contoh bwt nyimpen path di database gk gan..?? trs ntr skalian bwt ngambil link dari snanya.. mkasih sblumnya.. ane udh coba2 blm bisa soalnya..
coba di googling dlu gan.. ada banyak itu..
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..
agan bisa lihat di ebook saya.. disana juga udah saya sertain contoh aplikasi jadi nya.. jadi bisa di contoh2 gan..
move_uploaded_file(images/logoRetailer/Slide3.JPG) [function.move-uploaded-file]: failed to open stream: Permission denied
malah muncul kaya gini mas..kenapa ya?
ga diizinin katanya gan.. permision nya mungkin belum di set gan..
gan kalau simpan pake JAppendo, di bagian ini jadi ap y?
$simpanSementara=CUploadedFile::getInstance($model,’namaAttribut’);
wah, saya belum pernah coba juga gan kalo kayak gitu…
kalau cara merubah ukuran gambar yang telah di upload gimana ya
wah, saya ga tau juga kalo itu gan..
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…
ada yang salah ketik CHtml jadi Chtml
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..
itu cache nya masih kesimpen di browser agan.. di refresh pake ctrl+R aja gan..
mas,, saya minta link tutorial yang buat nampilin images dari database ke view?? tolong di bantu y gan…
tinggal di arahin aja path dari image nya mas.. di ebook saya contoh aplikasi nya ada kok..
dwonloadnya dimana agan
ane pengen tau cara up load cara ngesend kedata basenya sama nampilinnya
liat di postingan saya tentang ebook saya.. disana ada link donlot aplikasi nya..
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.
udah bener kok kyak gitu.. emang ga bisa ny knapa?
ga bisa ka, tetep yg kesimpen id.pdf
nama_file nya kosong.
kalo kesimpen itu artinya field $model->nama_file kamu mungkin emang punya nilai tersebut.. cz dia ga menghasilkan error berrti ga salah code nya..
gan ane udah berhasil uploadnya..cuma yang mau ane tanyain nie..biar path file locationnya juga bisa kita simpen itu gimana gan??
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)
)
tipe image nya character varying aja mas..
Mas sabit gimana cara bikin upload file sekaligus.. pada form saya ada add rownya. itu bagaimana ya?
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..
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’,
),
)
)); ?>
mau tanya mas sabit!
kalo mau nyimpen nama filenya kedalam database gimana ya?
mksih sebelumnya
coba dicari aja mas fungsi di php untuk nangkep nama file nya..
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
saya ikhlas mas kalo emang mau di copas orang.. yang penting berguna buat orang lain dan jadi ama jariyah.. hehe.. kayak pak ustadz saya..
mas saya uda ikut tutorial diatas kok ada pesan error ‘Property “CFileValidator.0” is not defined.’
itu kenapa ya
coba lihat di model ada validasi yang sala itu gan..
mas saya uda ikutin tutorial di atas tp pas ngesave data tidak kesimpan dan tidak ada pesan error
kalo ga ada pesan error dia artinya ga lolos validasinya gan.. coba cek kembali validasi apa yang ga lolos..
kok pas saya save malah direct langsung dan gak nyimpen datanya
mngkin validasinya blum lulus gan..
validasi dmna nya gan, ane bingung dari td gan?
mohon bantuanya pas d tambahin script ini si Createnya jd g jalan g mw nyimpen gan
$model->gambar=CUploadedFile::getInstance($model,’gambar’);
$model->gambar->saveAs(Yii::app()->basePath .
‘/../gambar/’ . $model->id.’.pdf’);
untuk menambahkan pada tipe file (upload) di model harus ditambah validasi “file” gan..
SIp thanks bro,,
nah cara biar didatabase namanya jd 1 gmna? kan ke folder namanya jd 1,2,3 dst
mksd nya jadi gmana gan? kalo namanya 1 semua nanti file nya cuma bisa satu gan.
Pingback: [ KOLEKSI ] Tutorial-Tutorial File Upload | phpsabila
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
di validasi nya udah di atur dia type nya file?
gan mau nanya dong klo mau ngeluarin file nya gmn? untuk upload nya udh bisa
di kasih sebuah link yang ngarah ke file itu aja gan..
mas, saya udah coba ikutin tutorial di atas tapi ko pas di simpan malah imagenya ke bacanya kosong 😦
kira-kira itu kenapa yah
ada pesan error nya gan?
gan ini kan udah berhasil upload file
nah gimana kalo misalkan mau download file yang udah di upload ???
di arahin aja langsung link nya gan..
Bisa Dikasih Tau Gan Gimana Coding nya . hhe
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)),
)
),
)); ?>
muncul pertanyaan gimna caranya supaya ketika saya menghapus gambar di databes, maka gambar juga ikut terhapus di folder images
ada postingannya saya buat gan..
pake unlink()
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..
agan harus atur di logika ketika upload file nya. Yang jelas harus ada dulu alur kapan dia disimpan di makanan dan kapan disimpan di minuman..
kalo upload video prosesnya gimana gan
sama aja gan dengan upload file biasa..
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,
));
}
diset manual misal $model->file=’namanya’;
Pingback: test copy | Blog sudarno
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..
pesan error lengkapnya apa gan?
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.
masalah diatas resolved..
mau tanya lagi maklum nobs.
kalo nambahin tinymce di yii kenapa kagak jalan ya? saya pake bootstrap..
baca2 di google pada bilang bootsrap n tinymce ber jquery gak support.
klo mau bikin tinymce yg kaga jquery giimana ya gan?
thanks before
saya ga pernah juga pake tinymce gan, kalo agan pake ckeditor saya ada buat tutor nya https://sabitlabscode.wordpress.com/2013/12/13/yii-framework-integrate-upload-image-with-editor-ckeditor/ itu langsung upload di editor nya gan..
maksud nya gambar yang sama disimpan di dua tempat gan? agan tinggal upload satu persatu tapi pengarahan folder nya dibedain gan..
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,
));
}
gan belum nge-set attribute nama nya dengan path nya gan,.
sip gan kemaren udah tak coba2, alhamdulilah bisa dan paham maksud tutorial agan yg ini
mau tanya gan,
ini sudah upload file,
kemudian supaya bisa file yg kita upload dapat di download gimana caranya gan?
langsung arahin aja sebuah link yang mengacu langsung ke file tsb gan..
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 😀
hmm, bingung juga,.. itu error dari aplikasi saya atau agan buat sendiri gan?
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
itu saveAs nya kayak nya salah cara deklarasinya mas.
gan ane udah buat nih,coba nge create tp file yang di upload nya gk kebaca gmn ya gan
file nya dalam bentuk apa? ga kebaca gimana gan? coba print_r path nya, jangan2 salah path nya..
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 🙂
pada view nya udah di kurun dalam sebuah cactivefrom belum? soalnya tombol submit bisa berfungsi kalo ada di dalam form.
mas cara tampilin gambar yang udah kita upload gimana ya ?
mohon bantuannya 🙂
arahin ke path gambar nya langsung.
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
pada postingan di atas sudah diterapkan cara simpan file ke suatu folder di server.
Gan gimana caranya menampilkan data yang di upload sebelum disimpan ke database??
Mohon dijelaskan ..
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(); ?>
biasa nya kasus2 gini terjadi karena path nya salah mas. COba di print_r path tempat mas nyimpen file biar ketahuan uda bener apa belum setting path nya.
iya nih, ternyata pathnya salah.. hehe makasih om sabit
Gan klo tipe file nya ada banyak gimana gan ?
misal .jpg .png .gif ?
di model nya bisa dibuat banyak pake koma2.
Mas numpang nyak aku da ikutin tutor diatas tapi gk ngirim ke database,
jadi error 404. kira-kira salahnya dimana!
kemungkinan path untuk nyimpen database nya yang uda ga ada mbak..
gan ko kalo update datanya ga bisa keupdate itu bagaimana ya?
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 😀
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”
gan klo file udah ke simpen di folder..dan skarang mau di tampilkan di data base ,,gmna caranya yaa..
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.
Ngeset biar kebaca di form sama memastikan direktori penyimpanan nya uda bener gimana mas ???
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?
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.
sori baru bales, render maksudnya memanggil halaman view yang mau ditampilkan pada user
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….
Terima kasih atas tutorialnya,, sya referensikan kepada rekan saya mengenai upload di framework yiii, dan tutorial ini berjalan dengan mulus. Semoga sukses selalu gan,
kalo upload video gimana gan??
sama aja sis dengan cara upload file biasa. Cuma ekstension nya aja disesuaikan untuk ekstension video.