2009-10-27 3 views
26

Ist es möglich, dass der Benutzer eine Datei mit einem anderen Namen herunterladen kann?Herunterladen einer Datei mit einem anderen Namen in den gespeicherten Namen

Zum Beispiel gibt es eine Datei namens "4324ffsd34.jpg". Ich möchte, dass Leute es über download.php mit einem anderen Namen (wie "filetodownload.jpg") herunterladen, ohne die ursprüngliche Datei umzubenennen.

+0

Sie können dies auch in Apache mit mod_rewrite tun, ohne Ihre PHP-Skripte zu treffen. Möglicherweise nicht auf Ihre Situation anwendbar, aber wenn dies der Fall ist, könnte dies die Leistung verbessern. – Artelius

Antwort

43

sicher, verwenden Sie ein Content-disposition header

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

, wenn Sie einen Standard-Dateinamen zur Verfügung stellen möchten, aber nicht automatisch herunterladen, dies scheint zu funktionieren.

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

ja ich kann jetzt sehen, thx :), aber ich denke, ich muss auch "readfile ('original.pdf');" es zu tun –

+0

Absolut, und gut, um die Content-Length und Content-Type auch zu setzen. Sie können filesize() für die Länge verwenden und schreiben Sie Ihre eigene Funktion basierend auf der Erweiterung, um Content-Typ zu tun oder http://uk2.php.net/fileinfo –

+0

@ RULE101 Sie können entweder 'readfile()' oder 'verwenden fread() 'um es zu tun –

19

Sicher, Sie können nur versuchen, so etwas wie dieses:

$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; 

Hoffe, es hilft!

0

Nichts falsch mit dem oben, aber ich hatte hinzuzufügen:

ob_clean(); 
flush(); 

vor ReadFile-

sonst kann ich nicht den Download jpg/png-Datei öffnen

9

Es gibt auch eine andere Art und Weise, wenn Sie verwenden html5

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

Prost: 3

+0

Download Attribut ist nicht Arbeit in Safari, das ist nur Arbeit auf Crome, firefox –

+3

Funktioniert für mich. Niemand benutzt Safari mehr. Zumindest niemand, der es ernst meint im Internet zu surfen ... –

+0

Danke @GeorgeButiri –

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

Hinweis: Sie müssen keine Dateierweiterung angeben, es wird vom Browser hinzugefügt werden. –

+0

Dieses "Download" -Attribut gilt nur für Links zu Ressourcen mit demselben Ursprung. –