New question

Question:

Date: 27-04-2017 11:09:46 (In Spanish)

¿Cómo guardar un documento PDF o DOC en mi base de datos MySQL?[Unresolved]

Buenas tardes,

Estoy diseñando un sistema de información y tengo una inquietud en una tabla.

Tengo que llenar mi tabla con un tipo de información y además a esa misma tabla subirle un archivo especifico que bien es de extensión PDF o DOC.

La idea es que me duarde el documento en la tabla más no la ruta.

Esta es mi tabla:
CREATE TABLE `cert_lib` (
  `nomatinm` varchar(25) NOT NULL,
  `fechacert` text NOT NULL,
  `area` varchar(20) NOT NULL,
  `archivo` blob NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


El siguiente es el código que tengo hasta el momento.

Controlador:
$archivo = isset($_FILES["archivo"]) ? $_FILES["archivo"]:NULL;
if ($archivo) {
   $extension = pathinfo($archivo["name"], PATHINFO_EXTENSION);
   $extension = strtolower($extension);
   $extension_correcta = ($extension == 'doc' or $extension == 'docx' or $extension == 'pdf');
   if ($extension_correcta) {
      $ruta_destino_archivo = "cert_libertad/{$archivo["name"]}";
      $archivo_ok = move_uploaded_file($archivo["tmp_name"], $ruta_destino_archivo);
   }	
}


Modelo:
function inscert($nomatinm, $fechacert, $archivo, $area){
		$sql= "INSERT INTO cert_lib(nomatinm, fechacert, area, archivo) VALUES ('$nomatinm', '$fechacert','$area', '$archivo')";
		//echo $sql;
		$this->cons($sql);

	}


Vista:
<td>
		 <?php if (isset($archivo)): ?>
       <?php if (!$extension_correcta): ?>
         <span style="color: #f00;"> La extensión es incorrecta, el archivo debe ser doc, docx o pdf. </span> 
       <?php elseif (!$archivo_ok): ?>
         <span style="color: #f00;"> Error al intentar subir el archivo. </span>
      <?php else: ?>
         <strong> El archivo ha sido subido correctamente. </strong>
         <br />
        
      <?php endif ?>
  	 <?php endif; ?>
	 	<input type="file" name="archivo"  />
		</td>


Agradezco sus sugerencias
Tags: Database - DOC - MySQL - MySQL Developing - PDF - PHP - Question - Upload Files Votes: 1 - Answers: 4 - Views: 34 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 29-04-2017 02:00:35 Hola Cesar:

    Alguna vez experimenté con imágenes (que también se puede hacer con PDF, texto plano, wod, etc) a codificarlo en Base 64.

    Parte del sistema binario de archivos (tienes una buena explicación con ejemplos programáticos en Wikipedia Base 64).

    Personalmente, a nivel de producción, volví al sistema tradicional: carpeta, en mi caso de imágenes, y lo guardado en base de datos era la ruta. Por extensión/peso y por programación no me rentaba.

    De todos modos PHP cuenta con base64_encode y su correspondiente base64_decode

    Si quieres hacer una prueba antes de programar, tienes por ejemplo, Codificador base64 online
      Votes: 3 - Link answer
     
  • Date: 29-04-2017 05:21:00 CESAR:
    Buenos días

    Sumado a lo que dice Txema, si dicha información sale, se gesta o se administra por medio de registros que tengas en TABLAS de tu BD, lo mejor es que es que utilices por ejemplo un PHPExcel o un FPDF u cualquier otros, de esta forma no debes guardar nada.

    Ahora bien si lo que necesitas es exclusivamente guardar archivos, no lo dudes hazlo en carpetas, porque a la larga tu TABLA sera muy pesada y ralentizara tus procesos.

    Un saludo y suerte
      Votes: 3 - Link answer
     
  • Date: 08-05-2017 09:45:59 Cesar

    Mes sumo a la respuesta de Antuan, no se aconseja incrustar documentos enteros u otros en las tablas de una BD debido al peso que en algun momento poseera, lo cual conllevara a ralentizar tus procesos
      Votes: 2 - Link answer
     
  • Date: 11-05-2017 14:28:10 Hola César:

    ¿Cómo estás? Me sumo también a la sugerencia de no guardar archivos en la base de datos. Te recomiendo guardarlos en algún otro lado y guardar la ruta dentro de la base.

    Si quieres ver más detalles, he escrito un artículo que puede ayudarte: http://academy.leewayweb.com/como-almacenar-archivos-en-una-base-de-datos-mysql/

    Saludos!
      Votes: 1 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In