Subir imágenes y texto a bbdd

Hola a todos,

Tengo un problema de estructura porque de momento no me aclaro mucho con yii.

He conseguido mirando tutoriales crear un modelo de tipo form, y mediante un controlador subir una imagen a un determinado directorio. Por otro lado también he conseguido (no hay que ser muy listo para usar el CRUD que trae Yii…) un formulario que me actualice unos campos de texto en la base de datos.

Ahora lo que quiero es tener un formulario con varios datos de texto y una imagen. No se si necesito 2 modelos uno para la base de datos y otro para el arhivo, o uno solo, si el formulario requiere alguna codificación especial, ni por donde entrarle…

Alguien tiene algún ejemplo en yii o sabe como podría hacerlo???

Gracias.

Este codigo entre muchas cosas que puede hacer sube un archivo a la BD en forma de binario…




// se obtienen las variables enviadas por el formulario

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


// se toma la instancia del archivo

$archivo = CUploadedFile::getInstance($model,'electronico');


// algunas propiedades que necesitaba almacenar en la BD como el nombre y la extension

$model->nombre = $archivo->name;

$model->extension = $archivo->type;


// se abre el archivo en modo lectura

$fp      = fopen($archivo->tempName, 'r');


// su contenido es pasado a la variable $content

$content = fread($fp, filesize($archivo->tempName));


// se cierra el archivo

fclose($fp);


// el contenido se pasa a la variable o propiedad del modelo en que estara almacenado

$model->electronico = $content;


// se guarda el modelo

$model->save();

Y el codigo del modelo es mas o menos asi…




class ModelArchivo extends CActiveRecord

{

	public function rules()

	{

		return array(

			array('electronico', 'required'),

			array('nombre', 'length', 'max'=>50),

			array('extension', 'length', 'max'=>12),

			array('electronico', 'file', 

				'types'=>'jpg, gif, png',

				'maxSize'=>1024 * 1024 * 10, // 10MB

				'tooLarge'=>'El archivo no puede superar los 10MB.',

			),

		);

	}

Claro, para llegar hasta este codigo antes debes de poner validaciones, aunque basicamente su implementacion esta facil … espero que sea claro para ti

Cuando procedo a salvar el registgro, YII me lanza una exception y no reconoce el tipo de dato binario, le hago un pg_escape_bytea y si lo salvar, pero cuando hago la rutina para mostrar el archivo no logra recuperar como binario, he utilizado pg_unescape_bytea, stream_get_contents, hice rutina php para salvar registro con binarios a la base de datos y salva. Cuando ejecuto rutina para mostrar el contenido de los archivos, muestra los que salve por php, mas genera error de metadata en los salvados por yii.

como maneja yii el salvado de campos binarios