Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Subir Imagenes a Oracle con PHP

Estas en el tema de Subir Imagenes a Oracle con PHP en el foro de Oracle en Foros del Web. Buenos Dias, acudo a ustedes para tratar de resolver un problema. resulta que estoy tratando de subir imagenes a una BD en ORACLE por PHP ...
  #1 (permalink)  
Antiguo 07/01/2011, 09:15
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Información Subir Imagenes a Oracle con PHP

Buenos Dias,

acudo a ustedes para tratar de resolver un problema. resulta que estoy tratando de subir imagenes a una BD en ORACLE por PHP pero no he podido, cuando ejecuto el SQL me muestra un error "ociparse(): OCIParse: ORA-00972: identificador demasiado largo", les adjunto el código, es de anotar que en la BD tengo el campo ARCHIVO_BINARIO declarado como BLOB:


Código:
// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;

// leer del archvio temporal .. el binario subido.
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));

// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size'];
$binario_tipo=$_FILES['archivo']['type'];

//insertamos los datos en la BD.
			$db_conn = ocilogon( "SCRIPT", "SCRIPT", "ORAPR1");

			$cmdstr = "insert into SCRIPT.ARCHIVOS (ARCHIVO_BINARIO, ARCHIVO_NOMBRE, ARCHIVO_PESO, ARCHIVO_TIPO) VALUES ('$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')";
			$parsed = ociparse($db_conn, $cmdstr);
			ociexecute($parsed);
header("location: listar_imagenes.php");  // si ha ido todo bien
exit;
Agradezco su ayuda al respecto.
  #2 (permalink)  
Antiguo 07/01/2011, 11:28
 
Fecha de Ingreso: enero-2011
Ubicación: LIMA
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Subir Imagenes a Oracle con PHP

busca las funciones de manejo de binarios con oracle ;) www.php.net :p

http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html
  #3 (permalink)  
Antiguo 07/01/2011, 12:24
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Subir Imagenes a Oracle con PHP

Muchas gracias, ya lo descargué y lo estoy revisando...
  #4 (permalink)  
Antiguo 11/01/2011, 09:14
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Subir Imagenes a Oracle con PHP

Les cuento que ya pude hacer la tarea, les adjunto los archivos completos para hacer la conexión y consultar las imágenes:

***************************************lobosolitar io.php**********************************

Código:
<html>
<head>
<title>Formulario de subida de fotos</title>
</head>
<body>
Formulario de subida de fotos a Oracle<br><br>
Limite de tamaño de subida de fotos 1.024 KB<br>

<form action="lobosolitario1.php" method="post" enctype="multipart/form-data">
Descripción de la imagen: <input type="text" name="lob_description"><br>
Abrir Archivo: <input type="file" name="lob_upload"><br><br>
<input type="submit" value="Subir Imagen"> - <input type="reset">
</form>
<br><a href=show.php>ver imagenes</a>
</body>
</html>
*************************************lobosolitario 1.php*************************************

Código:
<?php
$lim_tam = "1024000";
$lob_description = $_POST['lob_description'];
$lob_upload_name = $_FILES['lob_upload']['name'];
$lob_upload_size = $_FILES['lob_upload']['size'];
$lob_upload_type = $_FILES['lob_upload']['type'];
$lob_upload = $_FILES['lob_upload']['tmp_name'];

if($_FILES['lob_upload']['error']==1){
print "
	<script>
	alert('El Archivo supera el límite de tamaño, por favor seleccione un archivo diferente.')
	document.location.href='lobosolitario.php'
	</script>
	";
}else if($lob_upload_size>$lim_tam){
print "
	<script>
	alert('El Archivo supera el límite de tamaño, por favor seleccione un archivo diferente.')
	document.location.href='lobosolitario.php'
	</script>
	";
} else if($_FILES['lob_upload']['error']!=0){
print "
	<script>
	alert('Error de Archivo, el archivo no se puede subir.')
	document.location.href='lobosolitario.php'
	</script>
	";
}
else {
$user = "SCRIPT";
$pass = "SCRIPT";
$tsnames = "ORAPR1";
//Aqui se establece la conexion con una base de datos oracle.
$conn = OCILogon($user,$pass,$tsnames);

/*Inicializa un nuevo descriptor vacío LOB/FILE (LOB por defecto)
Reserva espai per mantenir descriptors o localitzadors LOB. Els valors valids pel tipus type son
OCI_D_FILE, OCI_D_LOB, OCI_D_ROWID. Per descriptors LOB, els metodes LOAD, SAVE, i SAVEFILE estan associats
amb el descriptor, per BFILE només existeix el mètode LOAD*/
$lob = OCINewDescriptor($conn, OCI_D_LOB);

//Preparem la consulta SQL(INSERT) capaç d'introduir els valors a la base de dades.
$stmt = OCIParse($conn,"INSERT INTO BINARY_DATA (id,description,bin_data,filename,filesize,filetype) VALUES (LOBO.NEXTVAL,'$lob_description',EMPTY_BLOB(),'$lob_upload_name','$lob_upload_size','$lob_upload_type') returning BIN_DATA into :the_blob");

/* Enlaza una variable PHP a un Placeholder de Oracle
Enllaça la variable PHP variable a un placeholder d'ORACLE ph_name. Si aquesta serà usada per entrada o
o sortida es determinarà en temps d'execució, i serà reservat l'espai necessari d'emmagatzemament. El
parametre lenght estableix el tamany màxim de l'enllaç. Si s'estableix length a -1 OCIBindByName utilitzarà
el tamany de la variable per establir el tamany màxim.
EN LA ULTIMA PRUEBA QUE SE REALIZÓ EL 07/01/2011 ESTE VALOR $LOB VENÍA PASADO POR REFERENCIA &$LOB NO OBSTANTE ESTO ES UN ERROR EN ESTE CASO
*/
OCIBindByName($stmt, ':the_blob',$lob, -1, OCI_B_BLOB);

//Ejecucion de la sentencia.
OCIExecute($stmt, OCI_DEFAULT);
if($lob->savefile($lob_upload))
{
OCICommit($conn);
echo "Blob successfully uploaded\n<br>";
echo "<a href=show.php>SHOW FILES</a>";
}
else
{
echo "Couldn't upload Blob\n";
}
OCIFreeStatement($stmt);
OCILogoff($conn);
}
?>

****************************************show.php** *****************************************

Código:
<?
$user = "SCRIPT";
$pass = "SCRIPT";
$tsnames = "ORAPR1";
//Fem el Login amb la base de dades
$Conn = OciLogon($user,$pass,$tsnames);

$sql_1 = "select id, filename, description, filetype from binary_data order by id desc";
$sql_1 = OCIParse($Conn, $sql_1);
OCIExecute($sql_1, OCI_DEFAULT);
While (OCIFetchInto($sql_1, $row, OCI_ASSOC))
{
echo "<a href=file.php?id=$row[ID] target=_blank>$row[FILENAME]</a>&nbsp;&nbsp;$row[FILETYPE]&nbsp;&nbsp;$row[DESCRIPTION]<br>";
}
echo "<br><a href=lobosolitario.php>Insertar una nueva imagen";
OCIFreeStatement($sql_1);
OCILogoff($Conn);
?>

**************************************file.php**** ********************************************

Código:
<?
/*
file.php
Archivo que nos muestra el archivo pedido a la base de datos
*/
$id=$_GET['id'];
$user = "SCRIPT";
$pass = "SCRIPT";
$tsnames = "ORAPR1";

$Conn = OciLogon($user, $pass, $tsnames);

$query = "select BIN_DATA, FILENAME, FILESIZE, FILETYPE from binary_data where ID=$id";
$stmt = OCIParse($Conn, $query);

$NewData = array();
OCIDefineByName($stmt,"BIN_DATA",$NewData["BIN_DATA"]);
OCIDefineByName($stmt,"FILETYPE",$NewData["FILETYPE"]);

OCIExecute($stmt);
OCIFetch($stmt);

If (is_object($NewData["BIN_DATA"]))
{
$NewData["BIN_DATA"] = $NewData["BIN_DATA"]->load();
}
Header ("Content-type: $NewData[FILETYPE]");
echo $NewData["BIN_DATA"];
OCIFreeStatement($stmt);
?>
************************************************** *******************************************

Obviamente se puede mejorar más pero esto es una base para saber cómo se suben y después se utilizan de acuerdo a como los necesites.

Etiquetas: imagenes, php, subir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:22.