Retroceder   Foros del Web > Programación para sitios web > PHP

Respuesta
 
Herramientas Desplegado
Antiguo 02-abr-2008, 11:11   #1 (permalink)
farra está en el buen camino
 
Avatar de farra
 
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 287
Exclamación guardar codigo binario en base de datos

existe alguna posibilidad de crear alguna pagina en php con un formulario en el cual selecciono un archivo X (.exe .mp3 .wmv .dll etc...) y guardo el codigo binario del archivo en la base de datos...

TABLA ArchivosBin

Campos:
Id (int) 10
NombreArchivo (varchar) 50
ExtencionArchivo (varchar) 4
CodigoBin (text)
Fechapublic (date)
IPpub (varchar) 50


Luego en otra pagina selecciono los archivos listando por nombrfe de archivo, una ves seleccionado el archivo o los archivos a construir aprieto el boton "Generar" y me genera en una carpeta de mi servidor y en la pagina salen los links para hacer download de los archivos con una cuenta regresiva de 10 minutos...

luego otra tarea programada que borra los archivos del server...

el codigo binario esta encriptado en las bases de datos y luego lo desencrypto


es posible hacer esto? como?
farra está desconectado   Responder Citando
Antiguo 02-abr-2008, 11:45   #2 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.051
Re: guardar codigo binario en base de datos

Hola farra,

Revisa este aporte:
Tutorial ejemplo: Subir archivos a tu BD (guardando en la BD en binario)

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 02-abr-2008, 15:08   #3 (permalink)
farra está en el buen camino
 
Avatar de farra
 
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 287
Descargar archivos traidos del codigo binario de la base de datos

Base de datos:

Código:
-- 
-- Estructura de tabla para la tabla `archivos` 
-- 

CREATE TABLE `archivos` ( 
`id` int(10) unsigned NOT NULL auto_increment, 
`archivo_binario` longblob NOT NULL, 
`archivo_nombre` varchar(255) NOT NULL default '', 
`archivo_peso` varchar(15) NOT NULL default '', 
`archivo_tipo` varchar(25) NOT NULL default '', 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
Formulario:

Código HTML:
<HTML> 
<HEAD> 
<TITLE>Binario a BD</TITLE> 
</HEAD> 
<BODY> 
<br><br> 
<FORM> 
<div> 
<p><strong>Archivo: </strong></p> 
<p> 
<INPUT> 
</p> 
<p> 
<INPUT> 
</p> 
</div> 
</FORM> <br><br> 
<div> 
<php> 
</div> 
</BODY> 
</HTML>


Codigo para insertar:

Código:


Código PHP:
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre.  Si no fue asi, te remite de nuevo al formulario de inserción: 
// No se comprueba aqui si se ha subido correctamente. 
if (empty($_FILES['archivo']['name'])){ 
header("location: formulario.php?proceso=falta_indicar_fichero"); //o como se llame el formulario .. 
exit; 


//establece una conexión con la base de datos. 
$conexion mysql_connect("localhost","root","") or die("No se pudo realizar la conexion con el servidor."); 
mysql_select_db("archivos",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca. 

// archivo temporal (ruta y nombre). 
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ; 

// leer del archvio temporal .. el binario subido. 
// "rb" para Windows .. Linux parece q con "r" sobra ... 
$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. 
$consulta_insertar "INSERT INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')"
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos."); 
$donde=mysql_insert_id(); 
header("location: inserto.php?id=".$donde);  // si ha ido todo bien 
exit; 


Codigo para ver:

Código:

Código PHP:
// OJO, sólo funciona con imagnes en formato JPEG ... 

if(isset($_GET['id'])) { 

    
$conexion=mysql_connect("localhost","root","") or die ("no se ha podido conectar a la BD"); 
    
mysql_select_db("archivos") or die ("no se ha podido seleccionar la BD"); 
    
$sql "SELECT archivo_binario,archivo_tipo,archivo_nombre FROM archivos WHERE id='".$_GET['id']."'"
    
$consulta mysql_query($sql,$conexion); 
    
$imagen mysql_result($consulta,0,"archivo_binario"); 

    
// Envio cabeceras al navegador .. se indica que lo "que vá" es una imagen de formato MIME JPEG 
    
Header ("Content-type: image/jpeg"); 

    
// Generar el thumbnail: 

    // Se crea la imagen desde el campo binario de la BD 
    
$img imagecreatefromstring($imagen); 

    
// Tamaño del Thumbanil (de la imagen a generar ..) 
    
$picsize 300
      
    
// Se obtienen los datos del ancho y alto de la imagen. 
    
$new_w imagesx($img); 
    
$new_h imagesy($img); 

    
// Se calcula la relación alto/ancho 
    
$aspect_ratio $new_h $new_w
      
    
// Se ajusta al nuevo tamaño 
    
$new_w $picsize
    
$new_h abs($new_w $aspect_ratio); 

    
// Se crea la mascara de la imagen nueva 
    
$dst_img imagecreate($new_w,$new_h); 

    
// Se copia y reajusta el nuevo tamaño en la nueva imagen. 
    
imagecopyresized($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img)); 

    
// Se entrega al buffer de salida (navegador en este caso) la imagen en formato JPEG 
    // El tercer parámetro (100) indica la calidad de la imagen: en porcentaje relación calidad/peso imagen. 
    
imagejpeg($dst_img,'',100); 





El problema:

me funciona la insercion, y bajar el archivo cuando se trata de imagenes, pero como hago para bajar cuando el archivo que subi en la BD es un .exe o un .mp3 ?
farra está desconectado   Responder Citando
Antiguo 02-abr-2008, 15:25   #4 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.051
Re: Descargar archivos traidos del codigo binario de la base de datos

Prueba con esto:
Código PHP:
<?php
if(isset($_GET['id'])) { 

    
$conexion=mysql_connect("localhost","root","") or die ("no se ha podido conectar a la BD"); 
    
mysql_select_db("archivos") or die ("no se ha podido seleccionar la BD"); 
    
$sql "SELECT archivo_binario,archivo_tipo,archivo_nombre FROM archivos WHERE id='".$_GET['id']."'"
    
$consulta mysql_query($sql,$conexion); 
    
$datos mysql_fetch_row$consulta );
    
$tipo $datos['archivo_tipo'];
    
$archivo $datos['archivo_binario'];
    
$nombre $datos['archivo_nombre']; 

    
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    
header("Cache-Control: private",false);
    
header ("Content-type: $tipo");
    
header("Content-Disposition: attachment; filename=\"$nombre\"\n");
    
header("Content-Transfer-Encoding: binary");
    echo 
$archivo;
}
?>
Saludos.

PD Por favor no crees nuevos temas, continua sobre el tema original, temas unidos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 03-abr-2008, 06:30   #5 (permalink)
farra está en el buen camino
 
Avatar de farra
 
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 287
Re: Descargar archivos traidos del codigo binario de la base de datos

ahora probe ese codigo que escribiste, pero sigue sin funcionar.. osea cuando abro me pregunta: desea abrir o guardar.. si le doy abrir me abre la pagina en blanco y si le doy guardar me guarda un archivo llamado 'ver' de 1kb sin extencion, y si le cambio la extencio a .exe o .mp3 igual no funciona...
farra está desconectado   Responder Citando
Antiguo 03-abr-2008, 06:56   #6 (permalink)
usermax tiene algunos puntos positivos de karma
 
Fecha de Ingreso: diciembre-2006
Mensajes: 515
Enviar un mensaje por MSN a usermax
Re: Descargar archivos traidos del codigo binario de la base de datos

Si tu objetivo con este script es "proteger" el archivo para que no lo descarguen cuando tu no quieres....
Entonces te coinviene guardarlo en alguna carpeta que no sea accesible via explorador web, una carpeta de base. Entonces en vez de bajarlo de la base de datos, simplemente lo copias y después lo borras ya que son muchos los programas o archivos recargarías la base de datos y sin tener un hosting dedicado puedes tener problemas de rendimiento.

Saludos
__________________
www.dominiomax.com

Basta de spam en nuestros forms!! conoce AntiSpam Class
usermax está desconectado   Responder Citando
Antiguo 03-abr-2008, 07:28   #7 (permalink)
farra está en el buen camino
 
Avatar de farra
 
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 287
Re: Descargar archivos traidos del codigo binario de la base de datos

mi objetivo es aprender...

ya se como guardar en una carpeta no accesible... y la forma como acceder con claves..

ya consegui guardar en una base de datos el codigo binario... ahora quiero saber como traer de nuevo el archivo... ya consegui con imagenes .jpeg .gif .bmp pero no consigo con archivos... .exe .mp3 .loquesea nose si tiene que compilar el codigo o algo asi para mostrarlo...


help!!!!!!
farra está desconectado   Responder Citando
Antiguo 03-abr-2008, 11:46   #8 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.051
Re: Descargar archivos traidos del codigo binario de la base de datos

Prueba así:
Código PHP:
<?php
if(isset($_GET['id'])) { 

    
$conexion=mysql_connect("localhost","root","") or die ("no se ha podido conectar a la BD"); 
    
mysql_select_db("archivos") or die ("no se ha podido seleccionar la BD"); 
    
$sql "SELECT archivo_binario,archivo_tipo,archivo_nombre FROM archivos WHERE id='".$_GET['id']."'"
    
$consulta mysql_query($sql,$conexion) or die( "Error en $sql: " mysql_error() );  
    
$datos mysql_fetch_row$consulta );
    
$tipo $datos['archivo_tipo'];
    
$archivo $datos['archivo_binario'];
    
$nombre $datos['archivo_nombre']; 

    
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    
header("Cache-Control: private",false);
    
header ("Content-type: $tipo");
    
header("Content-Disposition: attachment; filename=\"$nombre\"\n");
    
header("Content-Transfer-Encoding: binary");
    echo 
$archivo;
}
?>
Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 23-jul-2008, 17:09   #9 (permalink)
cmarrero está en el buen camino
 
Avatar de cmarrero
 
Fecha de Ingreso: enero-2008
Ubicación: San Luis
Mensajes: 247
Enviar un mensaje por MSN a cmarrero Enviar un mensaje por Yahoo  a cmarrero
Exclamación Respuesta: Descargar archivos traidos del codigo binario de la base de datos

Ahora como se puede hacer para hacerlo con todas las imagenes o archivos de esa bd... sin pasar el ID, que descargue a una carpeta todos los archivos...

Alguien Sabe como...
cmarrero está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 23:02.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93