Ver Mensaje Individual
  #22 (permalink)  
Antiguo 13/11/2015, 07:07
Avatar de xfxstudios
xfxstudios
 
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Como subir un archivo, dentro de un formulario?

el asunto no es el codigo se subida, ya que si te funciono sin problemas, pues eso no tiene problemas, lo que tienes que hacer es crear un archuivo intermedio entre la peticion en tu enlace y el archivo que force la descarga de este, algo asi:

Código PHP:
Ver original
  1. //verificamos la variable que llega, si esta vacia detenemos el codigo o redireccionamos
  2. if (!isset($_GET['file']) || empty($_GET['file'])) {
  3.  exit();
  4. }
  5.  
  6. $root = "archivos/";/*Directorio donde se guardan los archivos*/
  7. $file = basename($_GET['file']);/*Asigno el nombre del archivo ue llega a una variable*/
  8. $path = $root.$file;/*creo la ruta a mi archivo*/
  9. $type = '';
  10.  
  11.  
  12. if (is_file($path)) {
  13.  $size = filesize($path);
  14.  if (function_exists('mime_content_type')) {
  15.  $type = mime_content_type($path);
  16.  } else if (function_exists('finfo_file')) {
  17.  $info = finfo_open(FILEINFO_MIME);
  18.  $type = finfo_file($info, $path);
  19.  finfo_close($info);
  20.  }
  21.  if ($type == '') {
  22.  $type = "application/force-download";
  23.  }
  24.  // Definir headers
  25.  header("Content-Type: $type");
  26.  header("Content-Disposition: attachment; filename=$file");
  27.  header("Content-Transfer-Encoding: binary");
  28.  header("Content-Length: " . $size);
  29.  // Descargar archivo
  30.  readfile($path);
  31. } else {
  32.  die("El archivo no existe.");
  33. }

y los enlaces quedaria asi:

Código HTML:
Ver original
  1. <a href="descarga.php?file=nombrearchivo.rar">Descargar</a>

ya alli podrás forzar la descarga del archivo documento o imagen sin revelar la ruta completa hacia este. Tambien podrias complementarlo colocadole un codigo para trabajar con sesiones y solo los logueados descargan o que acepte solo peticiones que provengan desde dentro de tu server. Saludos
__________________
[email protected]
HITCEL