xisrask8x Posted January 23, 2012 Report Share Posted January 23, 2012 Amigos necesito de su ayuda, lo que pasa que quiero cargar un archivo con datos y estos dejarlos en una tabla de oracle, ya me pude conectar a la base y subir el archivo al servidor, ahora como leo el archivo y cargar las lineas a la tabla? me pueden orientar con esto?? Muchas gracias.- PD: mi version de PHP es la 5 y la Base de Oracle 10g Link to comment Share on other sites More sharing options...
AshWilliams Posted January 23, 2012 Report Share Posted January 23, 2012 Mira, te dejo un ejemplo con fotos, pero es casi lo mismo: subir.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: <?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: <?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: <?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); ?> Saludos :krider: Link to comment Share on other sites More sharing options...
xisrask8x Posted January 24, 2012 Author Report Share Posted January 24, 2012 gracias me sirvio bastante Link to comment Share on other sites More sharing options...
AshWilliams Posted January 24, 2012 Report Share Posted January 24, 2012 De nada XD ; entonces podríamos dar por cerrado el tema? Saludos :kitt: Link to comment Share on other sites More sharing options...
xisrask8x Posted January 29, 2012 Author Report Share Posted January 29, 2012 sep cierralo no mas gracias por tu ayuda Link to comment Share on other sites More sharing options...
AshWilliams Posted January 29, 2012 Report Share Posted January 29, 2012 De nada cumpa...se procede al cierre. Saludos :krider: Link to comment Share on other sites More sharing options...
Recommended Posts