2014-09-22 51 views
1

我的問題:PHP base64_decode產生無效圖像文件

我正在使用PHP將上傳的base64字符串保存到文件。該字符串來自iPhone應用程序,並且是base64編碼的jpeg文件。

當我將該文件的內容手動添加到圖像標記中的數據src中時,它將正確顯示。當我使用file_get_contents讀取它並將結果字符串添加到img數據標記時,它正常工作。

我的問題:當我使用file_get_contents讀取文件並使用base64_decode()保存結果時,生成的jpeg文件是INVALID

我的問題是,爲什麼明顯有效的base64編碼字符串在解碼和保存時不產生有效的JPEG文件?

某些源摘錄:

此功能,因爲它應該輸出圖像:

$imagepath = "D:\\path\\to\\image\\mybase64image.txt"; 
$imagecontent = file_get_contents($imagepath); 
header("Content-type:text/html"); 
$d = '<img alt="" src="data:image/jpeg;base64,' . $imagecontent . '"/>'; 
echo $d; 

這不工作,該文件是無效的:

$imagepath = "D:\\path\\to\\image\\mybase64image.txt"; 
$imagecontent = file_get_contents($imagepath); 
file_put_contents('img.jpg', base64_decode($imagecontent)); 

- img.jpg是一個無效的文件。 路徑是有效的,文件在那裏,權限也在那裏(結果文件img.jpg是一個二進制文件,只是無效),正如我所說的,它作爲一個數據src。

這裏是base64編碼文件:使用5.3.8 FASTCGI

  • 操作系統是Windows 2008

    http://www.mailnet.de/7E072017-DAEB-41E1-B02E-23FB51A05B80.txt

    • PHP版本R2
    • Web服務器IIS是7.5

    任何幫助表示讚賞。

  • +0

    你能發佈編碼和保存數據的代碼嗎? – 2014-09-22 13:27:13

    +0

    如果你的意思是iPhone的代碼,沒有我沒有訪問。如果有幫助,我可以發佈base64編碼文件嗎? – 2014-09-22 13:29:00

    +0

    好的,編輯 - 添加一個鏈接到base64編碼文件。 – 2014-09-22 13:33:32

    回答

    1

    %字符不允許在b64集合中。它看起來像你的字符串是網址編碼。它在將它傳遞給base64_decode()之前是urldecode()

    它在瀏覽器中的工作原理是因爲它們總是解碼url屬性。

    +0

    謝謝,這個伎倆。 – 2014-09-22 14:16:28