2015-05-29 31 views
0

我想從我的服務器插入圖像作爲背景圖像轉換爲base64。我的文件是可寫的,爲什麼我會看到filesize()和fread()錯誤?

我收到這些錯誤:

警告:文件大小():Stat失敗

警告:FREAD():長度參數必須大於0

我已閱讀,這兩個錯誤都可能是由文件不可寫入引起的,但是我已經將所有文件寫入相關的可寫入文件(圖像文件,它所在的文件夾和代碼所在的文件),並且仍然沒有喜悅。

這是PHP代碼

<?php 
$img_source = "image.jpg"; 
$img_binary = fread(fopen($img_source, "r"), filesize($img_source)); 
$img_string = base64_encode($img_binary); 
?> 

這裏是我的CSS/PHP的

body { background-image:url('data:image/gif;base64,<?php echo $img_string; ?>'); 

我以前achiving我想用get_file_contents的結果,但它是非常非常慢。這是我的老方法。

<?php echo base64_encode(file_get_contents($img_url.'/'.$image)) ?> 

回答

1

隨着file_get_contents你在正確的軌道上,但似乎你實際上是使用的URL,而不僅僅是文件路徑(因此file_get_contents使用HTTP來獲取文件的內容)。嘗試將其更改爲:

<?php 
$img_source = "image.jpg"; 
$img_string = base64_encode(file_get_contents($img_source)); 
?> 
+0

'filesize()'錯誤可能來自文件路徑不正確的事實。你最好仔細檢查一下。 – akirk

+0

$ img_source =「image.jpg」;誤導了我,對不起。實際上我需要使用$ img_source = $ img_url。'/'。$ image;因爲圖像永遠不會是恆定的。我只是用image.jpg來簡化演示。我試圖避免file_get_contents,因爲它很慢 – GoldenGonaz

+0

文件在哪裏?在你的服務器上? – akirk

相關問題