Foros del Web » Programando para Internet » PHP »

Problemas al descargar archivo

Estas en el tema de Problemas al descargar archivo en el foro de PHP en Foros del Web. Saludos, El problema que tengo es el siguiente: Estoy haciendo una pagina web donde enseño a los usuarios un listado con una serie de archivos ...
  #1 (permalink)  
Antiguo 15/06/2004, 02:30
k2k
 
Fecha de Ingreso: abril-2004
Mensajes: 21
Antigüedad: 20 años
Puntos: 0
Problemas al descargar archivo

Saludos,

El problema que tengo es el siguiente:

Estoy haciendo una pagina web donde enseño a los usuarios un listado con una serie de archivos mp3 para que se los puedan descargar. Los datos de estos archivos estan introducidos en una tabla, y el archivo en si, dentro de una carpeta.
A la hora de enseñar los archivos que hay en la tabla a los usuarios realizo un enlace con la intención que si le hacen click le salga la ventana de descarga de archivo. Pero en vez de esto me sale una pantalla con el contenido de toda la carpeta donde guardo los archivos.

El codigo que utilizo es el siguiente:

<a href='../upload/'.$row[1]>$row[0]</a>

Donde row[1] es donde tengo guardado el nombre del archivo y row[0] es el identificador que se tiene que hacer click.

Cual puede ser el problema para que no me salga directamente la ventana de descarga de archivo?

Gracias
  #2 (permalink)  
Antiguo 15/06/2004, 02:52
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 20 años
Puntos: 0
si tienes los datos de los archivos en una base de datos, puedes usar este codigo:

Código PHP:
mysql_connect("localhost","nombre","clave");
$consul "select tamano,nomb,url from archivos where id=".$_GET['id'];
$resul mysql_query($consul);
$reg mysql_fetch_array($resul);

header("Content-Disposition: attachment; filename=".$reg['nomb'].";"); 
header("Content-Type: application/force-download");
header("Content-Length: ".$reg['tamano']);
readfile($reg['url']);
    
exit; 
Con esto, forzarás la descarga del archivo
  #3 (permalink)  
Antiguo 15/06/2004, 03:23
k2k
 
Fecha de Ingreso: abril-2004
Mensajes: 21
Antigüedad: 20 años
Puntos: 0
Es que el caso es que tengo que hacer cada enlace para toda la lista que tengo de archivos y creo que lo que me has dicho solo funcionaría para uno. La funcion que realiza esto es la siguiente:

<?php

function escriure_taula($link)
{
$consulta= "SELECT * FROM arxiu";
$resultado= mysql_query($consulta,$link);
$columnes = 3; # Nombre de columnes
echo "<table width='100%' border='0' cellspacing='0' cellpadding='2'>";
echo "<tr><td>&nbsp</td></tr>";

if (mysql_num_rows($resultado)==0){
echo "<tr><td class='cosgris'colspan=$columnes>No hi ha cap arxiu disponible, disculpi les molesties.</td></tr> ";
echo"</table>";
}

else {
echo"<tr> <td class='cosgris'>Id</td> <td class='cosgris'>Nom</td> <td class='cosgris'>Grandària</td> </tr>";

for($i=0;$i<mysql_num_rows($resultado);$i++){
$row = mysql_fetch_row ($resultado);
//$carpeta=$_FILES['$row']['tmpname'] ;
echo"<tr> <td class='cosgris'><a href='../upload/'.$row[1]>$row[0]</a></td> <td class='cosgris'>$row[1]</td> <td class='cosgris'>$row[3]</td> </tr>";
}
echo"</table>";
}
}
?>
  #4 (permalink)  
Antiguo 15/06/2004, 03:45
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 20 años
Puntos: 0
El código que te he puesto, lo tienes en una página, por ejemplo, descarga.php.

Cita:
for($i=0;$i<mysql_num_rows($resultado);$i++){
$row = mysql_fetch_row ($resultado);
//$carpeta=$_FILES['$row']['tmpname'] ;
echo"<tr> <td class='cosgris'><a href='../upload/'.$row[1]>$row[0]</a></td> <td class='cosgris'>$row[1]</td> <td class='cosgris'>$row[3]</td> </tr>";
}
tienes que poner: <a href="descarga.php?id=<? echo $row['id']?>" ...>
  #5 (permalink)  
Antiguo 15/06/2004, 04:59
k2k
 
Fecha de Ingreso: abril-2004
Mensajes: 21
Antigüedad: 20 años
Puntos: 0
He puesto este código:

echo"<tr> <td class='cosgris'><a href='descarga.php?id= <? echo $row['0']?>' >$row[0]</a></td> <td class='cosgris'>$row[1]</td> <td class='cosgris'>$row[3]</td> </tr>";

Y me da el siguiente error en esta linia:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\easyserv\www\lib\escriure_taula1.php on line 23

He ido haciendo cambios pero no me salgo con la respuesta.
  #6 (permalink)  
Antiguo 15/06/2004, 05:36
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 20 años
Puntos: 0
no me habia dado cuenta que estaba dentro de un echo... no pongas el <? ?>. Hazlo asi:

Código PHP:
echo"<tr> <td class='cosgris'><a href='descarga.php?id=".$row['0']."'>".$row['0']."</a></td> <td class='cosgris'>".$row['1']."</td> <td class='cosgris'>".$row['3']."</td> </tr>"
A ver si asi te va
  #7 (permalink)  
Antiguo 16/06/2004, 01:35
k2k
 
Fecha de Ingreso: abril-2004
Mensajes: 21
Antigüedad: 20 años
Puntos: 0
Muchas gracias

Ahora con esta parte ya no tengo problemas, sino con la de descarga.php.
El código que utilizo yo es el siguiente, ya que no utilizo la variable url en la tabla:

<?php

function descarga()
{
include("lib/conectarse.php");

$link1=conectarse( );
$consul = "select nom, pes from arxiu where id=".$_GET
['id'];
$resul = mysql_query($consul,$link1);
$reg = mysql_fetch_array($resul);

header("Content-Disposition: attachment; filename=".$reg['nom'].";");
header("Content-Type: application/force-download");
header("Content-Length: ".$reg['pes']);
readfile($reg["'../upload/'.nom"]);

exit;

}
?>


Al hacer el link me dice que no se encuentra la pàgina, que puede ser
  #8 (permalink)  
Antiguo 16/06/2004, 01:58
k2k
 
Fecha de Ingreso: abril-2004
Mensajes: 21
Antigüedad: 20 años
Puntos: 0
En el readfile lo he cambiado a:

readfile("../upload/".$reg['nom']);

pero sigue sin funcionarme
  #9 (permalink)  
Antiguo 23/06/2004, 01:38
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 20 años
Puntos: 0
puede ser que el archivo no se encuentre en ../upload/...?

puedes probar a guardar la dirección completa de donde se encuentra el archivo. Al subirlo al servidor, indicas el directorio donde quieres guardarlo:

Código PHP:
$dir $_SERVER['DOCUMENT_ROOT']."upload/"
$dir .= $_FILES['fichero']['name']; 

move_uploaded_file($_FILES['fichero']['tmp_name'], $dir); 
pues guarda esa $dir en la base de datos.

Un saludo
  #10 (permalink)  
Antiguo 23/06/2004, 01:40
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 20 años
Puntos: 0
despues, en la función descarga.php, tendras que hacer:

Código PHP:
...
$consul "select nom,pes,dir from arxiu where id=".$_GET['id']; 
...
readfile($reg['dir']); 
  #11 (permalink)  
Antiguo 30/06/2004, 01:37
k2k
 
Fecha de Ingreso: abril-2004
Mensajes: 21
Antigüedad: 20 años
Puntos: 0
Muchas gracias ya funciona todo
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 18:50.