2011-11-24 28 views
9

Web servisime POST isteği yoluyla base64 kodlu bir JPEG dizesi alıyorum. Kodunu çözmek ve dosya sistemine kaydetmek istiyorum. Bunu PHP 5.3 kullanarak nasıl yapabilirim. Verileri base64_decode işlevini kullanarak başarıyla çözebilirim.Dosya sisteminde base64 kodu çözülmüş bir görüntü php kullanarak nasıl kaydedilir?

Nasıl bu sunucuda JPEG görüntüsü olarak dize deşifre kaydedebilirim?

Şimdiden teşekkürler. Eğer eminseniz

+0

bunu fopen kullanarak bir ikili dosyaya kaydetmeyi denediniz mi? – Arfeen

+0

@Arfeen Teşekkürler, file_put_contents() denedim ve çalıştı. Buraya ve Lawrence Cherone'nin yorumlarına dikkat çekmek için sorumu güncellemeye geldim. – Amit

+0

Çok daha esnek ve güçlü bir genel çözüm olarak, [PHP-FileUpload] (https://github.com/delight-im/PHP-FileUpload/tree/master) hem ['Base64Upload'] ile birlikte gelir (https: //github.com/delight-im/PHP-FileUpload/blob/7c950635cbd45ade9fb2656eb285259dc2a8f0fb/src/Base64Upload.php) ve ['DataUriUpload'] (https://github.com/delight-im/PHP-FileUpload/blob/7c950635cbd45ade9fb2656eb285259dc2a8f0fb /src/DataUriUpload.php), [burada belgelenmiştir] (https://github.com/delight-im/PHP-FileUpload/blob/master/README.md#usage). – caw

cevap

12

görüntü her zaman o zaman basitçe kullanabilirsiniz jpg olacaktır: file_put_contents();

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

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

Çok teşekkürler. İşe yarıyor. Ancak, her zaman bir JPEG olması garanti edilmez. MIME türünden alıp alamayacağımı deneyeceğim. :) Yardımın için teşekkürler! – Amit

8

veri canvas.toDataURL() fonksiyonu türetilmiştir eğer gerekli + işaretleriyle birlikte boş alanlar değiştirilmesi.

See this question

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

O benim durumumda çok yardımcı oldu.

+0

dizginin kodunu çözmesi gerekiyor. – FabianoLothor

İlgili konular