Lunes 23 de Diciembre de 2024, 14:18
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Bases de Datos
»
Oracle
(Moderador:
ElNapster
) »
Subir Imagenes a Oracle con PHP
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Subir Imagenes a Oracle con PHP (Leído 4567 veces)
jualeop
Nuevo Miembro
Mensajes: 2
Subir Imagenes a Oracle con PHP
«
en:
Viernes 7 de Enero de 2011, 16:52 »
0
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: PHP
// 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.
Tweet
jualeop
Nuevo Miembro
Mensajes: 2
Re: Subir Imagenes a Oracle con PHP
«
Respuesta #1 en:
Martes 11 de Enero de 2011, 16:25 »
0
Les cuento que ya pude hacer la tarea, les adjunto los archivos completos para hacer la conexión y consultar las imágenes:
***************************************lobosolitario.php**********************************
Código: PHP
<
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
>
*************************************lobosolitario1.php*************************************
Código: PHP
<?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 uploadedn<br>"
;
echo
"<a href=show.php>SHOW FILES</a>"
;
}
else
{
echo
"Couldn't upload Blobn"
;
}
OCIFreeStatement
(
$stmt
)
;
OCILogoff
(
$conn
)
;
}
?>
****************************************show.php*******************************************
Código: PHP
<?
$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>
$row[FILETYPE]
$row[DESCRIPTION]
<br>"
;
}
echo
"<br><a href=lobosolitario.php>Insertar una nueva imagen"
;
OCIFreeStatement
(
$sql_1
)
;
OCILogoff
(
$Conn
)
;
?>
**************************************file.php************************************************
Código: PHP
<?
/*
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.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Bases de Datos
»
Oracle
(Moderador:
ElNapster
) »
Subir Imagenes a Oracle con PHP