[Yii Framework] Upload File not Required

Beberapa waktu lalu ada yang menanyakan bagaimana cara membuat upload file not required di Yii Framework.  Sebenarnya sudah saya jawab disini , tapi tidak ada salahnya saya bahas di post tersendiri..

Yah, untuk melakukan itu cukup membuat controller create nya menjadi seperti berikut:

	public function actionCreate()
	{
		$model=new File;
		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));
			}
		}

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

Penjelasan : Disana dapat anda lihat code nya akan mengecek terlebih dahulu apakah file yang d upload ada atau tidak. Jika tidak ada, maka program tidak akan mengeksusi perintah “saveAs($path)” yang berarti menyuruh program menyimpan file nya. Tapi jika ada, maka dia akan mengeksekusi perintah tersebut..

Selesai… Selamat mencoba…

Semoga membantu…😀

16 Responses to [Yii Framework] Upload File not Required

  1. pram says:

    salam kenal gan…….ane 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.jpgnya saja….terimaksih..

    terimakasih…..mohon bantuannya…..

  2. sabitzhabit says:

    coba liat code controller ny gan..

  3. maap gan ,yang disini malah kesimpan path nya tapi.
    ga dapet id nya, jadi gini :

    /gambar/images/.jgp

    knp ya gan?
    mohon bantuannya.
    terima kasih banyak sebelumnya.

  4. berrti $model->id nya ga masuk gan..

  5. iya gan, tapi nama file yg d folder berubah sesuai id.
    kira2 apa yg salah ya gan.
    ini codingnya gan :

    public function actionCreate()
    {
    $model=new Gambar;
    if(isset($_POST[‘Gambar’]))
    {
    $model->attributes=$_POST[‘Gambar’];
    $models;
    if(strlen(trim(CUploadedFile::getInstance($model,’path’))) > 0)
    {
    $models=CUploadedFile::getInstance($model,’path’);
    $model->path=Yii::app()->basePath . ‘/../images/’ . $model->id.’.jpg’;
    }
    if($model->save())
    {
    if(strlen(trim($model->path)) > 0)
    {
    $paths=Yii::app()->basePath . ‘/../images/’ . $model->id.’.jpg’;
    $models->saveAs($paths);
    }
    $this->redirect(array(‘view’,’id’=>$model->id));
    }
    }

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

  6. emang pasti brubah ssuai id gan..
    karena di code ini:
    $paths=Yii::app()->basePath . ‘/../images/’ . $model->id.’.jpg’;

    agan kasih nama file nya nama id nya, dengan extension .jpg..

  7. iya gan, tapi ko kalo di tabelnya $model->id nya ga kebaca ya😦

  8. jadi kalo di folder kesimpan sesuai
    Yii::app()->basePath . ‘/../images/’ . $model->id.’.jpg’;

    tapi kalo di tabel kesimpennya cuma gigi gan
    /gambar/images/.jgp

  9. nilai “id” itu kan sebenernya disimpen di generate otomatis dari database(auto increment). Jadi id akan tercipta dengan sendirinya ketika terjadi operasi “save()”. Nah, masalah nya agan input nilai ke tabel “path” itu sebelum terjadi operasi “save()”, jadi nilai id ny kosong..
    Sedangkan nama file agan ciptakan setlah trjadi operasi save(), jadi dia udah ada id nya..

  10. makasih ya gan, penjelasannya.
    sangat membantu bgt🙂

  11. kupruz says:

    mas saya udah coba tapi kok tetep “file cannot be blank” ya?
    di database udah disetting null,di model jg nggak required.. kira2 masalahnya apa ya?

  12. tipha says:

    gan kalau ektensi bukan .pdf tapi sesuai dengan file yg diuploadkan

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: