2013-03-02 100 views
0

「另存爲」對話框顯示並允許用戶下載圖片,但下載的圖片已損壞並可以查看。強制圖片下載無法正常工作

<?php 
    $username = $_GET['username']; 
    $size = $_GET['size']; 
    $ext = $_GET['ext']; 
    $border = $_GET['border']; 
    $basename = basename($_SERVER['REQUEST_URI']); 

    if(!isset($size)) { $size = 'small'; } 
    if(!isset($ext)) { $ext = 'jpeg'; } 
    if(!isset($border)) { $border = 'true'; } 

$file = 'avatar-'.$size.'-'.$username.'.'.$ext; 

    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.$basename); 
    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; 
?> 

下載鏈接:download picture。並且應該下載的圖片:avatar-Luxie.jpeg
順便說一句,圖片是由另一個腳本生成的,我不知道是否重要,如果你需要它,我可以發佈代碼。

.htaccess文件的片段:

Rewriterule ^images/user-([A-Za-z0-9_-]{1,10}).jpeg$ /system/avatar-dl.php?username=$1&size=big&ext=jpeg&border=true [L,QSA] 
+0

下載的圖像是155字節;顯然這是一個問題。代碼看起來不錯,'$ file'呢? – Jon 2013-03-02 16:58:33

+0

$文件是由另一個代碼生成的,輸出是http://drksde.tk/images/avatar-Luxie.png – Ender 2013-03-02 17:00:40

回答

0

這是該文件的內容:

Warning: readfile(avatar-big-Luxie.png): failed to open stream: No such file or directory in /home/u720533143/public_html/system/avatar-dl.php on line 24

在我看來就像該文件是不存在。

+0

readfile(../ images/avatar-big-Luxie.png)不起作用,應該我先將文件保存在服務器中?失敗可能是由我用來生成圖片的腳本造成的 – Ender 2013-03-02 17:05:13

+0

檢查文件名的拼寫錯誤(大寫字母,錯誤的字符,擴展名) – Dharman 2013-03-02 17:07:41

+0

看起來像文件名,擴展名和一切都很好,大小應該是8.6 kb – Ender 2013-03-02 17:10:51