Foros del Web » Programando para Internet » PHP »

Problemas con descarga de archivos

Estas en el tema de Problemas con descarga de archivos en el foro de PHP en Foros del Web. Hola, amig@s Tengo un problemmilla, uso este escript para subir archivos al servidor Código PHP: if ( $_GET [ 'action' ]== graba ){ //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( ...
  #1 (permalink)  
Antiguo 21/09/2006, 17:34
 
Fecha de Ingreso: septiembre-2006
Mensajes: 6
Antigüedad: 18 años, 2 meses
Puntos: 0
Problemas con descarga de archivos

Hola, amig@s

Tengo un problemmilla, uso este escript para subir archivos al servidor
Código PHP:
if ($_GET['action']==graba){
//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']) or empty($titulo) or empty($categoria) ){ 
header("location: $PHP_SELF?proceso=Falta ingresar datos"); //o como se llame el formulario .. 
exit; 

// 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']; 
$fecha=date("Y-m-d");
$usuario=1;
//insertamos los datos en la BD. 
$consulta_insertar "INSERT INTO archivos (titulo, archivo,tipo,peso,fecha,idcategorias,idusuarios) VALUES ('$titulo', '$binario_nombre', '$binario_tipo','$binario_peso','$fecha','$categoria','$usuario')"
mysql_query($consulta_insertar,$cn) or die("No se pudo insertar los datos en la base de datos."); 
header("location: $PHP_SELF?proceso=Archivo insertado");  // si ha ido todo bien 
exit; 

hasta aqui todo bien me graba y todo pero cuando uso este script para la descarga de archivos, me baja el arechivo supuestamebte pero nop hay nada dentro
Código PHP:
include("conexion.php");

        
$extenciones = array("application/msword"=>"doc","application/pdf"=>"pdf","image/pjpeg"=>"jpg","image/gif"=>"gif","application/vnd.ms-excel"=>"xls");
        
        
$sqldescarga "SELECT archivo,tipo,peso,titulo FROM archivos WHERE idarchivos='".$_GET['id']."'";
        
$rsdescarga mysql_query($sqldescarga,$cn);

        
$file mysql_result($rsdescarga,0,"archivo");
        
$type mysql_result($rsdescarga,0,"tipo");
        
$peso mysql_result($rsdescarga,0,"peso");
        
$nombre mysql_result($rsdescarga,0,"titulo");
     
        
header('Content-type: '.$type);
        
header('Content-Transfer-Encoding: Binary');
        
header('Content-length: '.$peso);
        
header('Content-disposition: attachment; filename="'.$nombre.'.'.$extenciones[$type].'"'); 
        echo 
$file
no entiendo a que se debe, el peso y todo es lo de los archivos subidos,pero no baja nada, una ayudita?
  #2 (permalink)  
Antiguo 21/09/2006, 20:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Tienes algunos problemas de "base" en algunos puntos del código que expones (independiente del problema puntual que puedas tener):

Código PHP:
if ($_GET['action']=="graba"){ 
Usa comillas para tu valor en la comparación .. es una "cadena" no una "constante"!!.

Código PHP:
header("Location: ".$_SERVER['PHP_SELF']."?proceso=".urlencode("Falta ingresar datos")); 
No mezcles el uso de variables superglobales como $_xxxx y llamadas a variables en forma "global" como la que el ejemplo ilustra.

Si pasas en el URL "frases" con espacios, debes codificar el URL, sino sólo veras la primera palabra de la frase (hasta el espacio justo).

Para los problemas con tu archivo a descargar (script que lo gestiona). Quita o comenta las líneas donde llamas a cabeceras HTTP (esos header() ..). Observa como se ejecuta tu código .. mira si observas el archivo como se lee de tu BBDD "el binario" (por decirlo así .. un montón de caracteres al parecer sin sentido, eso es tu archivo) o bien observas algún error de ejecución.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:12.