PHP - hola necesito descargar y ver documentos BLOB desde una base de datos sql

   
Vista:

hola necesito descargar y ver documentos BLOB desde una base de datos sql

Publicado por victor (1 intervención) el 27/05/2015 14:04:15
hola amigos aki les dejo el codigo de subida de archivos a la base de datos(subir.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?PHP
include("conec sub arch.php");
$si_subio=false;
$id_archivo="";
if (isset($_FILES['archivo'])){
 
	// Cargar en un arreglo los formatos de archivos permitidos
 
	$tipos = array("application/pdf","application/postscript","application/postscript","application/postscript","application/acrobat","application/x-pdf","applications/vnd.pdf",
	"text/pdf","text/x-pdf");
	$maximo = 100204000;
	if (in_array($_FILES['archivo']['type'],$tipos)){
		if($_FILES['archivo']['size'] <= $maximo){
			$archivo = $_FILES["archivo"]["tmp_name"];
			$tamanio=array();
			$tamanio = $_FILES["archivo"]["size"];
			$tipo = $_FILES["archivo"]["type"];
			$nombre_archivo = $_FILES["archivo"]["name"];
			extract($_REQUEST);
			if ( $archivo != "none" ){
				$fp = fopen($archivo, "r+b");
				$contenido = fread($fp, $tamanio);
				$contenido = addslashes($contenido);
				fclose($fp);
				$query = "INSERT INTO `doc_pdf` (archivo,nombre,tipo) VALUES
				('$contenido','$nombre_archivo','$tipo')";
				if (mysql_query($query)){
					$si_subio=true;
					$id_archivo=mysql_insert_id();
				}else{
					$si_subio=false;
					echo mysql_error();
				}
			}else{
				echo "<h1><b>No fue posible subir el archivo <a href='../arch aut.php'>Subir Otro Archivo</a></b></h1>";
			}
			if($si_subio){
				echo "<h1><b>subido con exito  <a href='../arch aut.php'>Subir otro archivo</a></b></h1>";
			}
		}else{
			echo "<h1><b>Tamanño de Archivo demasiado grande</b></h1>";
		}
	}else{
		echo "<h1><b>El formato del archivo no es correcto Solo Documentos PDF (.pdf; .ai; .eps; .ps )</b></h1>";
	}
}else{
	echo "<h1><b>No Ha seleccionado</b></h1>";
}
?>

aki el del listado de los documento pero aki ya no puedo ni ver el documento ni descargarmenlo(listado.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
	$con=mysql_connect("localhost","root","") or //Se establece la conexión con el servidor
		die("No se puede establecer la conexión con el servidor");
 
	$db=mysql_select_db("mibase",$con); //Se selecciona la BBDD
 
	$archivo="Select ID, nombre from doc_word";
	$resultado=mysql_query($archivo);
 
	print "<table id='tab' align='center' border='1'><tr><td hidden='hidden'></td><td><b>ID</b></td><td><b>NOMBRE</b></td><td><b>DESCARGAR</b></td></tr>";//Creación de la tabla e índices
	while($fila=mysql_fetch_array($resultado)){
		print "<tr><td>";
		print $fila['ID'];
		print "</td><td>";
		print $fila['nombre'];
		print "</td><td>";
		print "<a href='bajar.php?".$fila['ID']."'><img src='../img/logdoc.png' width='48' height='48' /></a>";
		print "</td></tr>";
	}
	print "</table>";
?>

y por ultimo el de descarga(bajar.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
 
$ssql = "SELECT archivo FROM doc_word WHERE Id=ID"
 
$conexion = AbreBD('mibase');
 
$consulta = mssql_query($ssql, $conexion);
 
$registro = mssql_fetch_assoc($consulta);
 
$archivo = $registro["archivo"];
 
header('Content-type: application/msword');
header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.template');
header('Content-type: application/vnd.ms-word.document.macroEnabled.12');
header('Content-type: application/vnd.ms-word.template.macroEnabled.12';
header('Content-type: application/vnd.oasis.opendocument.text');
header('Content-type: application/rtf');
 
header('Content-Disposition: attachment; filename=archivo.doc');
header('Content-Disposition: attachment; filename=archivo.dot');
header('Content-Disposition: attachment; filename=archivo.docx');
header('Content-Disposition: attachment; filename=archivo.dotx');
header('Content-Disposition: attachment; filename=archivo.docm');
header('Content-Disposition: attachment; filename=archivo.dotm');
header('Content-Disposition: attachment; filename=archivo.odt');
header('Content-Disposition: attachment; filename=archivo.rtf');
 
echo $archivo;
 
mssql_free_result($consulta);
 
CierraBD($conexion);
 
?>
en esta ultima a la hora de descargar se me descarga el codigo php de descarga(bajar.php), aparte de los fallos que me da:

Parse error: syntax error, unexpected '$conexion' (T_VARIABLE) in C:\wamp\www\conecxion 2\word\bajar4.php on line 5

aki dejo la tabla de la base de datos SQL:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 27-05-2015 a las 12:01:56
-- Versión del servidor: 5.5.24-log
-- Versión de PHP: 5.4.3
 
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
 
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
 
--
-- Base de datos: `mibase`
--
 
-- --------------------------------------------------------
 
--
-- Estructura de tabla para la tabla `doc_word`
--
 
CREATE TABLE IF NOT EXISTS `doc_word` (
  `ID` int(10) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(150) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL,
  `archivo` longblob,
  `tipo` varchar(150) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf16 COLLATE=utf16_spanish2_ci AUTO_INCREMENT=34 ;
 
--
-- Volcado de datos para la tabla `doc_word`
--
 
INSERT INTO `doc_word` (`ID`, `nombre`, `archivo`, `tipo`) VALUES
(1, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(8, 'Activar seguridad en apache.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(9, 'Activar seguridad en apache.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(10, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(11, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(12, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(13, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(14, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(15, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(16, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(17, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(18, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(19, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(20, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(21, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(22, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(23, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(24, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(25, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(26, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(27, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(28, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(30, 'apuntes para examen de srvicios.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
(32, 'Seguridad en redes WIFI.docx', 0x0030003000300030002d00300030002d00300030, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
 
 
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

si ven algo que este mal diganmelo,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

hola necesito descargar y ver documentos BLOB desde una base de datos sql

Publicado por xve (5523 intervenciones) el 27/05/2015 16:58:28
Hola Victor, veo algunos errores en tu código... intento comentarte...

1.- al guardar el archivo, lo guardas en la tabla doc_pdf, y en la pagina bajar.php, buscas en la tabla doc_word

2.- al buscar el archivo, haces esta consulta:
1
$ssql = "SELECT archivo FROM doc_word WHERE Id=ID"
Primero le falta el punto y coma la final de la instrucción
Segundos, nunca encontrara un id que se denomine ID... tendrás que obtener el id enviado desde la pagina listado.php

Yo lo modificaria así:
1
print "<a href='bajar.php?id=".$fila['ID']."'><img src='../img/logdoc.png' width='48' height='48' /></a>";

y en la consulta, algo así:
1
$ssql = "SELECT archivo FROM doc_word WHERE Id=".$_GET["id"]

3.- Solo tienes que poner un formato de archivo... y tu los pones todos...


Ya no he seguido mirando... ya nos comentaras...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar