2016-08-25 57 views
0

考慮以下(簡化)的PHP腳本: PHP腳本下載適用時與IMG SRC直接,但不叫

<?php 
header("Content-Length: ".filesize("data/file.svg")); 
header("Content-Type: image/svg"); 
$file = fopen("data/file.svg","rb"); 
while(!feof($file)) 
{ 
    print(fread($file, 1024*8)); 
    ob_flush(); 
    flush(); 
} 
?> 

正確的Firefox下載文件「file.svg」當PHP腳本的網址是直接調用。但是,當它通過HTML src標記使用時,如下所示:

<img src="https://example.org/script.php"> 

然後Firefox報告「無法加載圖像」。開發人員工具中的「網絡」選項卡顯示它「已轉移」2.92 KB,但它表示「大小」爲0 KB。 爲什麼它在第一種情況下工作,但不在第二種情況下?

+1

我會使用readfile(「data/file.svg」);'在標題後面,應該是你需要的所有東西 – 2016-08-25 03:30:21

+2

SVG的MIME類型實際上是'image/svg + xml'而不是'image/svg' 。 – Sherif

+0

@Dagon正如我所說:這是一個簡化的腳本。在現實世界中,我禁用緩存並支持更大的文件和範圍。 readfile會使用更多的內存(?),我無法實現HTTP_RANGE。 – Scindix

回答

1

因爲@Sherif已經在他的評論中說過我使用了錯誤的MIME類型。用image/svg+xml代替image/svg修復了這個錯誤。