2011-11-24 76 views
9

我通過POST請求獲取base64編碼的JPEG字符串到我的Web服務。 我想解碼它並將其保存在文件系統中。 我如何使用PHP 5.3來實現這一點。 我能夠使用base64_decode函數成功解碼數據。如何使用PHP在文件系統中保存base64解碼圖像?

如何將此解碼的字符串保存爲服務器中的JPEG圖像?

在此先感謝。

+0

你是否嘗試使用fopen將其保存在二進制文件中? – Arfeen

+0

@Arfeen謝謝,我試過file_put_contents(),它工作。我來這裏是爲了更新我的問題,注意到你和Lawrence Cherone的評論。 – Amit

+0

作爲一個更加靈活和強大的通用解決方案,[PHP-FileUpload](https://github.com/delight-im/PHP-FileUpload/tree/master)帶有兩個['Base64Upload'](https: //github.com/delight-im/PHP-FileUpload/blob/7c950635cbd45ade9fb2656eb285259dc2a8f0fb/src/Base64Upload.php)和['DataUriUpload'](https://github.com/delight-im/PHP-FileUpload/blob/7c950635cbd45ade9fb2656eb285259dc2a8f0fb /src/DataUriUpload.php),[這裏記錄](https://github.com/delight-im/PHP-FileUpload/blob/master/README.md#usage)。 – caw

回答

12

如果您是確保圖像將永遠是JPG格式,那麼你可以簡單地使用:file_put_contents();

<?php 
$decoded=base64_decode($encodedString); 

file_put_contents('newImage.JPG',$decoded); 
//leave it to you to randomize the filename. 
?> 
+0

非常感謝。有用。然而它不保證總是一個JPEG。我會試着看看我能否從MIME類型中獲得它。 :)感謝幫助! – Amit

8

與+標誌更換空白,如果數據是從canvas.toDataURL()函數得到的是必需的。

$encodedString = str_replace(' ','+',$encodedString); 

See this question

它在我的情況下幫了不少忙。

+0

他需要解碼字符串。 – FabianoLothor

相關問題