Según tu código, $row[1]
es "el nombre del archivo". El encabezado del tipo de contenido debe contener el tipo de contenido en cambio, es decir, el tipo de archivo mime, por ejemplo:
header('Content-type: application/pdf');
Si desea agregar un nombre de archivo:
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename='.$row[1]);
print $data;
Asegúrese de $data
es el contenido del archivo, algo que puede tomar de readfile()
por ejemplo.
Lea más sobre el manual:http://php.net/manual/en/function .readfile.php
Tenga en cuenta que si bien un navegador puede ver fácilmente PDF e imágenes, creo que Excel necesita algo ad hoc complemento para eso.
Un ejemplo más completo directamente del manual , para tener una idea más completa (no todos esos encabezados son necesarios, y debe cambiar otros de acuerdo con su código):
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;