Xupload, no logro que me suba los fichero

Hola a todos, estoy intentando usar esta extensión

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

en el controler tengo:


'upload'=>array(

				'class'=>'ext.xupload.actions.XUploadAction',

					'subfolderVar' => 'parent_id',

					'path' => realpath(Yii::app()->getBasePath()."/../images/uploads"),

			),


public function actionUpload()

	{

		$model = new XUploadForm;

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

			'model' => $model,

		));

	}

y en la vista


<?php

$this->widget('ext.xupload.XUploadWidget', array(

					'url' => Yii::app()->createUrl("site/upload", array("parent_id" => 1)),

                    'model' => $model,

                    'attribute' => 'file',

					'options' => array(

						'beforeSend' => 'js:function (event, files, index, xhr, handler, callBack) {

					        handler.uploadRow.find(".file_upload_start button").click(callBack);

					    }'

					),

));

?>

<button id="start_uploads" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary">

	<span class="ui-button-icon-primary ui-icon ui-icon-circle-arrow-e"></span>

	<span class="ui-button-text">Iniciar</span>

</button>

<script type="text/javascript">

$('#start_uploads').click(function () {

    $('.file_upload_start button').click();

});

</script>

Creo entender que la ruta donde deberían subir los fichero es ruta/protected/../images/uploads pero no me funciona, puedo elegir el fichero me sale para subir y hace la carga pero desaparece todo y no ha copiado nada ahí.

Lo estoy probando en local, podría ser el problema?

También me gustaría saber si con esta misma extensión se podrá ver el resultado, es decir, el fichero listo para descargar o eliminar, como sale en la demo http://blueimp.github.com/jQuery-File-Upload/

Gracias.

Tienes que reformular tu algoritmo.

Lo que pasa es que no esta permitido subir archivos dentro de la carpeta protected de la aplicación.

Lo que hacen los programadores que tratan con widgets es publicar carpetas dentro del directorio protected usando el componente CAssetManager y el metodo publish(). pero eso en este caso no funcionaria.

Diria que optes por subirlas a una carpeta publica como la de images o crear una y fijar permisos de acceso a dicha carpeta solamente accesibles con la extension xuload.

Gracias por tu respuesta.

Es que en realidad lo debería esta subiendo en la carpeta uploads dentro de images. Es una carpeta pública, no lo entiendo.

La demo si que me funciona bien y no me lo explico, si lo tengo todo igual.

Hay alguna forma de hacer algún debug para saber donde se produce el error porque le he dado mil vueltas.

Puedes utilizar firebug en consola de errores, para saber si en algun momento de la ejecucion del script se produce un error de Javascript…

Tambien seria bueno que le hicieras un CVarDumper::dump() a las rutas como realpath(Yii::app()->getBasePath()."/../images/uploads") para saber si esa ruta es correcta.

Saludos y no dejes de avisar si resuelves el problema :)

Muchas gracias por preocuparte pero no se realmente que pasó, el caso es que me arte de todo y como era un proyecto de prueba lo borre y seguí los pasos nuevamente y mágicamente funciona.

Ahora lo que estoy haciendo es poder ver los fichero subidos, para ello estoy usando cfile (http://www.yiiframework.com/extension/cfile/) que así como un poco a lo bestia me muestra todos los ficheros de forma recursiva, en el caso de usar una ruta inicial que contenga directorios:




$listado = Yii::app()->file->set('images/uploads/')->contents;

  

  foreach ($listado as $valor) {

	if (CFile::set($valor)->isDir) {

	    echo 'Directorio: '.CFile::set($valor)->basename . '<br />';

	    $listado2 = Yii::app()->file->set($valor)->contents;


	    foreach ($listado3 as $valor2) {

	      echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' .CFile::set($valor2)->basename . '<br />';

	    }

	} else {

            echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' .CFile::set($valor)->basename . '<br />';

        }

  }



No se si esta es la mejor manera o usando yii se podría hacer de otra pero es la que se me ocurrió y funciona que es lo que necesito después del dolor de cabeza que tuve.

Creo que con esto y un poco de maquetación se puede quedar algo decente, ¿qué pensáis?