2009-10-27 21 views
26

¿Es posible que su usuario descargue un archivo con un nombre diferente?Descargar un archivo con un nombre diferente al nombre almacenado

Por ejemplo, hay un archivo llamado "4324ffsd34.jpg". Quiero que las personas lo descarguen a través de download.php, con un nombre diferente (como "filetodownload.jpg"), sin renombrar el archivo original.

+0

También puede hacer esto en Apache con mod_rewrite sin necesidad de presionar sus scripts PHP. Puede no ser aplicable a su situación, pero si lo es, podría mejorar el rendimiento. – Artelius

Respuesta

43

Claro, utilizar una Content-disposition header

header('Content-Disposition: attachment; filename="filetodownload.jpg"'); 

si desea proporcionar un nombre de archivo por defecto, pero no descarga automática, esto parece funcionar.

header('Content-Disposition: filename="filetodownload.jpg"'); 
+0

sí puedo ver ahora, thx :), pero supongo que también debo usar "readfile ('original.pdf');" para hacerlo –

+0

Absolutamente, y es bueno configurar la longitud del contenido y el tipo de contenido también. Puedes usar filesize() para la longitud y escribir tu propia función basada en la extensión para hacer content-type o usar http://uk2.php.net/fileinfo –

+0

@ RULE101 puedes usar 'readfile()' o ' fread() 'hacerlo –

19

Claro que puedes, sólo trata de algo como esto:

$original_filename = '4324ffsd34.jpg'; 
$new_filename = 'my_new_filename_is_detailled.jpg'; 

// headers to send your file 
header("Content-Type: application/jpeg"); 
header("Content-Length: " . filesize($original_filename)); 
header('Content-Disposition: attachment; filename="' . $new_filename . '"'); 

// upload the file to the user and quit 
readfile($original_filename); 
exit; 

espero que ayude!

0

No hay nada malo con lo anterior pero tuvo que añadir:

ob_clean(); 
flush(); 

antes readfile

de lo contrario no se puede abrir el archivo de descarga jpg/png

9

También hay otra manera si usted están utilizando html5

<a href="link/to/my/file/with/a/name/i/dont/like.jpg" download="MyFile.jpg">Download</a> 

Saludos: 3

+0

atributo de descarga no funciona en safari, esto solo funciona en crome, firefox –

+3

Funciona para mí. Nadie está usando safari nunca más. Al menos nadie que se tome en serio la navegación por la web ... –

+0

Gracias @GeorgeButiri –

1
<a href="4324ffsd34.jpg" download="filetodownload">Download</a> 
+0

Tenga en cuenta que no tiene que especificar la extensión del archivo, lo hará ser agregado por el navegador. –

+0

Este atributo de "descarga" solo se otorga a los enlaces a recursos con el mismo origen. –

Cuestiones relacionadas