2009-10-27 15 views
26

Có thể cho phép người dùng của bạn tải xuống tệp có tên khác không?Tải xuống tệp có tên khác với tên được lưu trữ

Ví dụ: có tệp có tên "4324ffsd34.jpg". Tôi muốn mọi người tải xuống thông qua tệp download.php, với một tên khác (như "filetodownload.jpg"), mà không cần đổi tên tệp gốc.

+0

Bạn cũng có thể thực hiện việc này trong Apache bằng mod_rewrite mà không cần nhấn các tập lệnh PHP của mình. Có thể không áp dụng được cho tình huống của bạn, nhưng nếu có, nó có thể cải thiện hiệu suất. – Artelius

Trả lời

43

Chắc chắn, sử dụng một Content-disposition header

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

nếu bạn muốn cung cấp một tên tập tin mặc định, nhưng không tự động tải về, điều này dường như để làm việc.

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

vâng tôi có thể xem ngay bây giờ, thx :), nhưng tôi đoán tôi cũng phải sử dụng "readfile ('original.pdf');" để làm điều đó –

+0

Tuyệt đối và tốt để đặt Độ dài nội dung và Loại nội dung. Bạn có thể sử dụng filesize() cho độ dài và viết hàm của riêng bạn dựa trên phần mở rộng để làm kiểu nội dung hoặc sử dụng http://uk2.php.net/fileinfo –

+0

@ RULE101 bạn có thể sử dụng 'readfile()' hoặc ' fread() 'để làm điều đó –

19

Chắc chắn bạn có thể, chỉ cần thử một cái gì đó như thế này:

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

Hy vọng nó sẽ giúp!

0

Không có gì sai với trên nhưng tôi đã có thêm:

ob_clean(); 
flush(); 

trước readfile

nếu không tôi không thể mở các tập tin tải về jpg/png

9

Ngoài ra còn có một cách khác nếu bạn đang sử dụng html5

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

Chúc mừng: 3

+0

tải về thuộc tính không hoạt động trong safari, điều này chỉ làm việc trên crome, firefox –

+3

Làm việc cho tôi. Không ai sử dụng safari nữa. Ít nhất không ai nghiêm túc duyệt web ... –

+0

Cảm ơn bạn @GeorgeButiri –

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

Lưu ý bạn không phải chỉ định phần mở rộng tệp, nó sẽ được trình duyệt thêm vào. –

+0

Thuộc tính "tải xuống" này chỉ được vinh danh cho các liên kết đến các tài nguyên có cùng nguồn gốc. –

Các vấn đề liên quan