Foros del Web » Programando para Internet » PHP »

Leer ficheros descargados de un servidor https

Estas en el tema de Leer ficheros descargados de un servidor https en el foro de PHP en Foros del Web. Hola buenas tardes. Tengo un problema y es que puedo subir mis ficheros al servidor sin ningún problema, se trata de una dirección segura https, ...
  #1 (permalink)  
Antiguo 17/03/2014, 11:42
 
Fecha de Ingreso: marzo-2014
Mensajes: 1
Antigüedad: 10 años, 1 mes
Puntos: 0
Pregunta Leer ficheros descargados de un servidor https

Hola buenas tardes. Tengo un problema y es que puedo subir mis ficheros al servidor sin ningún problema, se trata de una dirección segura https, pero a la hora de descargarlos, lo realiza, lo descarga con el tamaño correcto, pero a la hora de abrir el sistema me indica, si son pdf, que el fichero esta vacío, lo cual no es cierto, tiene 320Kb, y si es de word me dice que tiene que traducirlo y no puede, de excel directamente me dice que no puede. Lo curioso es que si estos mismos ficheros intento abrirlos en el servidor, sin descargarlos, los abre correctamente, es decir, en el servidor están correctos el problema se origina al bajar. las instrucciones que utilizo son las estándar lo incorporo por si sirve de algo:
if (!isset($_GET['$Fichero_Selec']) || empty($_GET['$Fichero_Selec'])) {
exit();
}
$root = "subidas/";
$file = basename($_GET['$Fichero_Selec']);
$path = $root.$file;
$type = '';

echo " la variable path tiene " .$path ."<br>";
echo " la variable file tiene " .$file ."<br>";
echo "ver que significa is_file " .is_file($path) ."<br>";

if (is_file($path))
{
$size = filesize($path);
if (function_exists('mime_content_type'))
{
$type = mime_content_type($path);
} else if (function_exists('finfo_file'))
{
$info = finfo_open(FILEINFO_MIME);
$type = finfo_file($info, $path);
finfo_close($info);
}
if ($type == '')
{
$type = "application/force-download";
}

// Definir headers
header("Content-Type: $type");
header("Content-Disposition: attachment; filename=$file");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $size);
// Descargar archivo
readfile($path);
} else {
die("El archivo no existe.");
}
/*
  #2 (permalink)  
Antiguo 17/03/2014, 13:50
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Leer ficheros descargados de un servidor https

una vez llegado al navegador el mismo deberia devolver la data normalmente, el SSL es trasparente para el usuario, quizás el problema sea otro:

1 - revisa que tus archivo de PHP en el Servidor NO tenga BOM, esto puede corromper la data
2 - revisa que no estás imprimiendo caracteres ocultos como espacios antes del readfile(), por ejemplo un simple espacio antes del <?php marca la diferencia.

veo que haces esto:
Código PHP:
Ver original
  1. echo " la variable path tiene " .$path ."<br>";
  2. echo " la variable file tiene " .$file ."<br>";
  3. echo "ver que significa is_file " .is_file($path) ."<br>";

allí ya estás corrompiendo el archivo descargado, si haces un readfile NO puedes imprimir nada más a la salida, a excepción de los headers necesarios
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: ficheros, https, servidor, variable
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.