Como guardar un pdf en un campo blob en php y BD oracle

Alguien podría ayudarme o un ejemplo please se los agradecería mucho

1 Respuesta

Respuesta
1

Bueno pues ya que nadie respondió a mi pregunta yo me respondo sola, la solución es muy fácil a continuación pongo el código y descripción de cada cosa espero a alguien más le pueda servir.

¿
<?php
//verifica si se ha hecho clic en el boton guardar
if(filter_input(INPUT_POST, 'btnGuardar')){
  $id=  filter_input(INPUT_POST, 'id');
  /*propiedades del archivo*/
  $archivo_temp = $_FILES['archivo']['tmp_name'];
 $conn =oci_connect("xxx", "xxx","xxxxxxxxxxxxxxxx"); 
if (!$conn) {    
  $m =oci_error();    
  echo $m['message'];    
  exit; 
} else {    
  echo "conexion con exito"; 
}
  //verificamos si no hay error en la conexion
  if(!$conn){
    $error= oci_error();
    die("ERROR: ".$error["message"]);
  }
  //lee el archivo a un string
  $archivo_string=file_get_contents($archivo_temp);
  $st= oci_parse($conn, 'INSERT INTO tabla (columna1, columna2) 
    VALUES (:columna1, empty_blob()) 
    RETURNING columna2 INTO :columna2');
  //inicializamos una variable de tipo blob
  $blob=oci_new_descriptor($conn, OCI_D_LOB);
  //vinculamos los parametros con las variables
  oci_bind_by_name($st, ":columna1", $id);
  oci_bind_by_name($st, ":columna2", $blob, -1, OCI_B_BLOB);
  //ejecutamos el statement sin hacer commit
  oci_execute($st, OCI_NO_AUTO_COMMIT);
  $blob->save($archivo_string); //guardamos el archivo como binario
  oci_commit($conn); //ejecutamos el commit
  //liberamos la variable y cerramos conexion
  $blob->free();
  oci_free_statement($st);
  oci_close($conn);
  echo 'termino';
}
?>
<!--Formulario-->
<! DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
  </head>
  <body>
    <form method="post" action="" enctype="multipart/form-data">
      Id <input type="number" name="id" /><br/>
      <input type="file" name="archivo" /><br/><br/>
      <input type="submit" name="btnGuardar" value="Guardar" />
    </form>
  </body>
</html>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas