PHP - Subir archivo a blob en MySQL

 
Vista:

Subir archivo a blob en MySQL

Publicado por Gonzo (1 intervención) el 04/10/2011 20:53:27
Buenas,

Llevo unas cuantas horas comiéndome la cabeza intentando lo siguiente.

Tengo un formulario donde el usuario puede subir archivos a una tabla. El archivo es tipo MEDIUMBLOB. La base de datos es MySQL y trabajo con PHP.

Creo que el problema reside al transformar el archivo en formato mediumblob.

Os paso el código.

1
2
3
4
5
6
7
8
$userfile_name = $_FILES['CrCreador']['name']['imagen'];
                $userfile_tmp  = $_FILES['CrCreador']['tmp_name']['imagen'];
                $userfile_size  = $_FILES['CrCreador']['size']['imagen'];
                $userfile_type  = $_FILES['CrCreador']['type']['imagen'];
                $userfile_error  = $_FILES['CrCreador']['error']['imagen'];
 
                $file_data = base64_encode((@fread(fopen($userfile_tmp, 'rb'), filesize($userfile_tmp))));
                $file_data = addslashes($file_data);



Luego tengo una funcion que hace la consulta

miClase::setObraCreador($file_data,7,'IMAGEN',$userfile_type);

La consulta es :

$Sql = "INSERT INTO cr_obras_creador
(id_creador,tipo_archivo,archivo,tipo_mime)
VALUES ($creador,'IMAGEN','".$archivo."','$mime')";

$archivo es el $file_data y $mime es el $userfile_type, éste ultimo me lo pone bien.

El archivo se guarda en la base de datos pero no se abre, es como si se hubiera dejado algo por el camino.


¿Qué puede faltarme? ¿Qué falla? Ando desesperado ya con este tema.


PD: Utilizo un framework llamado Yii. Poco recomendable, por cierto.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Subir archivo a blob en MySQL

Publicado por Remizero (1 intervención) el 15/10/2011 07:43:28
Te cuento que ando en lo mismo.

De lo que he podido analizar, te falta cerrar el archivo

1
2
3
4
5
$fp      = fopen ( "ruta/de/tu/imagen.xxx", 'rb' );
$imagen = fread ( $fp, filesize ( "ruta/de/tu/imagen.xxx" ) );
$imagen = addslashes ( $imagen );
fclose ( $fp );
$imagen = base64_encode ( $imagen );


Prueba así a ver que tal, pero no te aseguro que la puedas ver completa, aun no consigo la visualización de la imagen completa, solo hasta la mitad.

Otra idea que te doy es buscar la manera de convertir la imagen a blob o binario con alguna función de php pero aun no consigo la forma.

Espero te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar