Foros del Web » Programando para Internet » PHP »

descargar ficheros desde mi web

Estas en el tema de descargar ficheros desde mi web en el foro de PHP en Foros del Web. Estoy haciendo una web dinamica y necesito incluir la posibilidad de que los usuarios pulsando sobre el nombre de un archivo determinado se lo puedan ...
  #1 (permalink)  
Antiguo 09/08/2006, 10:24
 
Fecha de Ingreso: junio-2006
Mensajes: 15
Antigüedad: 17 años, 9 meses
Puntos: 0
descargar ficheros desde mi web

Estoy haciendo una web dinamica y necesito incluir la posibilidad de que los usuarios pulsando sobre el nombre de un archivo determinado se lo puedan descargar, es decir, voy a tener una carpeta donde los clientes van a ir metiendo ficheros, y dinamicamente yo tengo que incluir esos ficheros en su pagina web..alguien me puede ayudar con el código que necesito??gracias!
  #2 (permalink)  
Antiguo 09/08/2006, 10:43
Avatar de GaboMaKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Viña del Mar - Chile
Mensajes: 323
Antigüedad: 21 años, 5 meses
Puntos: 2
la idea es sencilla, haces un formulario con la info que necesitas e incluyes un campo de tipo FILE, luego al procesar el formulario, mediante php haces el upload, guardando en el path que definas el archivo subido, y la info en tu BD o archivo plano, luego al listar el contenido de tu BD solo linkeas el path del archivo.

Muestra el código que tienes, para poder ayudarte y ´recuerda usar la opción Buscar del foro, hay varios temas similares.
Exito
__________________
Exito!!
:censura:
Visita Uganet.cl
  #3 (permalink)  
Antiguo 09/08/2006, 10:52
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 18 años, 8 meses
Puntos: 0
http://www.php.net/manual/es/function.date.php para el Upload
Si quieres listar los archivos...
http://www.php.net/manual/es/function.opendir.php para mostrar los archivos en pantalla...
http://www.webexperto.com/articulos/...lo.php?cod=197 para descargar el archovo...

Eso es todo lo que nesesitas... aunque tambien lo puedes hacer con MySQL y quedará más automatizado. Si nesesitas ayuda con PHP, me avisas y te hecho una mano ;D.

Atte... DarkXNightmare ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #4 (permalink)  
Antiguo 09/08/2006, 11:16
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Yo utilizo esta función que no recuerdo de donde la saqué con lo cual no puedo dar los créditos del dueño, ejem. Permite resumir archivos cosa q con la opción q da DarkXNightmare en el servidor ajeno a mi control no me permite. La pongo x si también te sirve.

Código PHP:
function dl_file_resume($file){

   
//First, see if the file exists
   
if (!is_file($file)) { die("<b>404 Archivo no encontrado!</b>"); }

   
//Gather relevent info about file
   
$len filesize($file);
   
$filename basename($file);
   
$file_extension strtolower(substr(strrchr($filename,"."),1));

   
//This will set the Content-Type to the appropriate setting for the file
   
switch( $file_extension ) {
     case 
"exe"$ctype="application/octet-stream"; break;
     case 
"zip"$ctype="application/zip"; break;
     case 
"mp3"$ctype="audio/mpeg"; break;
     
//case "mpg": $ctype="video/mpeg"; break;
     //case "avi": $ctype="video/avi"; break;

     //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
     
case "php":
     case 
"htm":
     case 
"html":
     case 
"txt": die("<b>No se pueden descargas ficheros "$file_extension ."!</b>"); break;

     default: 
$ctype="application/force-download";
   }

   
//Begin writing headers
//  header("Pragma: public");
//  header("Expires: 0");
   
header("Cache-Control:");
   
header("Cache-Control: public"); 
//  header("Content-Description: File Transfer");
   
   //Use the switch-generated Content-Type
   
header("Content-Type: $ctype");
//if your filename contains underscores, you can replace them with spaces
$filespaces str_replace("_"" "$filename);


  
$header='Content-Disposition: attachment; filename='.$filespaces;
   
header($header );
//
header("Accept-Ranges: bytes");
//  header("Content-Transfer-Encoding: binary");

  
$size=filesize($file);
//check if http_range is sent by browser (or download manager)
   
if(isset($_SERVER['HTTP_RANGE'])) {
 list(
$a$range)=explode("=",$_SERVER['HTTP_RANGE']);
//if yes, download missing part
 
str_replace($range"-"$range);
 
$size2=$size-1;
 
$new_length=$size2-$range;
 
header("HTTP/1.1 206 Partial Content");
 
header("Content-Length: $new_length");
 
header("Content-Range: bytes $range$size2/$size");
} else {
 
$size2=$size-1;
 
header("Content-Range: bytes 0-$size2/$size");
 
header("Content-Length: ".$size2);
}
//open the file
$fp=fopen("$file","r");
//seek to start of missing part
fseek($fp,$range);
//start buffered download
while(!feof($fp))
{
//reset time limit for big files
set_time_limit(0);
print(
fread($fp,1024*8));
 
flush();
}
fclose($fp); 
   
   exit;
     

Los case de avi y mpg los tengo comentados porque así te los descargas como cualquier otro. Si los descomentas se te abre el reproductor y te los descarga a través de él.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #5 (permalink)  
Antiguo 09/08/2006, 11:38
 
Fecha de Ingreso: junio-2006
Mensajes: 15
Antigüedad: 17 años, 9 meses
Puntos: 0
Este es mi codigo:

$cons_desc_asig = "select distinct NomDescargaAsig, DescripDescargaAsig from Asignatura, DescargaAsig where ASIGNATURA_idAsignatura ='$idasig'";
$resul_desc_asig = mysql_query ($cons_desc_asig) or die ("la consulta falla");
if (mysql_num_rows ($resul_desc_asig) == 0){
echo "No hay datos";
}
else{
while($fila = mysql_fetch_array($resul_desc_asig,MYSQL_ASSOC)){
echo '<p align="center" class="datos">'.$fila["NomDescargaAsig"];
echo " : ";
echo '<class="datos">'.$fila["DescripDescargaAsig"].'</p>';


}
}
echo "<p></p>";


Lo que necesito es que el usuario al clickear sobre NomDescargaAsig salga un dialogo de descarga, y eso es lo q no se como hacer...es decir..el href...blablabla me entendeis? a lo mejor alguna de las soluciones propuestas me vale , las pruebo y os digo, pero paciencia, q soy novata! gracias!!
  #6 (permalink)  
Antiguo 09/08/2006, 15:05
Avatar de GaboMaKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Viña del Mar - Chile
Mensajes: 323
Antigüedad: 21 años, 5 meses
Puntos: 2
asi se entiende mejor la idea master. Esto es lo que necesitas

Asi quedarían tus links
<a href="down.php?file='.$fila["campo_descarga"].'">Descargar</a>

ahora el dialogo de descarga.
down.php
Código PHP:
<?php
$id 
$HTTP_GET_VARS["file"]; // recibe el nombre o archivo a descargar.
$path="upload"// la carpeta donde tengo guardados los archivos.
$enlace $path."/".$id// la unión de lo anterior.
header("Content-type: application/force-download");
header ("Content-Length: ".filesize($enlace)); // aca muestra el tamaño del archivo
header ("Content-Disposition: attachment; filename=".$id."\n\n");
header("Content-Transfer-Encoding: binary");
readfile($enlace);
if (!@
readfile($sDocumento)) //en caso de que falle o no encuentre el archivo.
    
echo "<div align=center><b>Ha sido imposible descargar el fichero. Pulse F5 para actualizar.</b></div>";
?>
espero que te sirva.
__________________
Exito!!
:censura:
Visita Uganet.cl

Última edición por GaboMaKano; 09/08/2006 a las 15:07 Razón: Faltas de ortografia
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 22:47.