File feltöltés Yii-ben

Ti használtatok már file feltöltést yii-ben?

Én találtam egy java file feltöltőt ami működik is meg minden, csak hát nekem nem java-s kellene.

Inkább valami flash-es, vagy simán javascript kód alapú.

http://www.yiiframework.com/extension/jumploader-java-uploader/

Mi lenne a cél? Egyszerre több gondolom én. Itt van ez, ez egy alap feltöltés. Vagy azt csinálod, hogy ajax-al ezt hivogatod, vagy megoldod úgy, hogy tömbbként végigfut a feltöltésen egy foreach ciklussal. A view mezőben pedig a name végére oda rakod, hogy [].

Pl Items[‘media’][], amikor meg feldolgozod, akkor meg $_POST[‘Items’][‘media’][].

Én az uploadify flash alapú ajaxos feltöltőt részesítem előnyben.

A kiterjesztés itt letőlthető a Yii-hez.

http://www.yiiframework.com/extension/uploadify/

Sziasztok

Egyűrlaphoz akarok képfeltöltési lehetőséget adni. A controller azonban hibát dob:

Fatal error: Call to a member function saveAs() on a non-object in D:\xampp\htdocs\hirek2\protected\controllers\PostController.php on line 80

public function actionCreate()

{


	$model=new Post;





	// Uncomment the following line if AJAX validation is needed


	// $this->performAjaxValidation($model);





	if(isset($_POST['Post']))


	{


		$rnd = rand (0,9999);


		$model->attributes=$_POST['Post'];


		


		$uploadedFile = CUploadedFile::getInstance ($model, 'image');


		$fileName = "{$rnd}-{$uploadedFile}";


		$model->image = $fileName;			


		


		if($model->save())


		{


			$uploadedFile->saveAs(Yii::app()->basePath.'/../post/'.$model->image);


			$this->redirect(array('view','id'=>$model->id));


		}


	}





	$this->render('create',array(


		'model'=>$model,


	));


}

Így néz ki a rules () függvény, amibe beleköt. Azonban ha kikommentezem a 80.sort, akkor lefut, de nem tölti fel a képet. Ötlet?

A CUploadedFile::getInstance() nyilván NULL értéket ad vissza, vagyis nincs fájl feltöltve. Az első dolog, aminek utánanéznék, az az enctype=“multipart/form-data” megléte a <form> elemben. Én aránylag rendszeresen megfeledkezem róla :)

az is hiba volt. de a fájl helyébe is belekötött + a \ és / közt is különbséget tett, de sikerült megoldani.

Még annyival egészíteném ki ezt a bejegyzést, hogy ha minden jó és semmilyen üzenetet nem kaptok és egyszerűen nem történik semmi, akkor a php konfig upload_max_filesize és post_max_size limitet a feltöltendő fájl túllépi. Ez apache specifikus dolog. Lekezelése a kontrolleren keresztül történhet a yii-ben, mivel ilyen esetben a POST és a FILES is eldobódik. már csak a $_SERVER változón keresztül lehet trükközni…

További infókat itt találtok.

http://php.net/manua...file-upload.php




    if ($_SERVER['REQUEST_METHOD'] == 'POST' && empty($_POST) && $_SERVER['CONTENT_LENGTH'] > 0) {

        throw new Exception(sprintf('The server was unable to handle that much POST data (%s bytes) due to its current configuration', $_SERVER['CONTENT_LENGTH']));

    }