Hola comunidad, espero todos se encuentren bien, bueno les comento mi inconveniente, tengo un formulario donde el usuario sube un archivo, en la extranet este archivo se encuentra disponible para descargar, para poder forzar la descarga, manejo los headers() de PHP, hasta aquí todo bien, el problema se me presenta cuando el usuario guarda un archivo que tiene en su nombre caracteres españoles ( ñ Ñ á Á é É í Í ó Ó ú Ú ), ahi me hace cualquier cosa, por ejemplo subo un archivo que se llama "años_paso_acá.mp3", cuando intento descargarlo me pone "A�os_paso_ac�.mp3", y claro este archivo no existe, el problema es que necesito forzar la descarga, que este archivo, por ejemplo, no me abra el reproductor predeterminado en el navegador, entonces luego de probar MUCHAS cosas creo que lo mejor será remplazar los caracteres del nombre del archivo, por ejemplo que me substituya todass las coincidencias que encuentre con ( ñ Ñ á Á é É í Í ó Ó ú Ú ) por ( n N a A e E i I o O u U ), se entiende la idea?, bueno pero no tengo idea de como tratar esa cadena ?? alguna ayuda!!
les dejo el codigo que fuerza la descarga GRACIAS!!!!!
Código PHP:
<?
$archivo=$_GET[archivo];
if(file_exists($archivo))
{
$file=$archivo;
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=".basename($file));
header("Content-Length: ".filesize($file));
readfile($file);
}
else
{
print "Usted esta accediendo a un archivo que no existe<br>".$archivo."<br>";
}
?>
EDITO: Estaría bueno tambien que me esa misma funcion me quite los caractres especiales (@!ºª|.....etc), se que esto se puede gacer con REGEXP pero no logro entender su funcionamiento