PHP'de tuval resminin kaydedilmesiyle ilgili bir sorunum var. Boş bir .png
dosya alıyorum. Bu sorun hakkında çok fazla araştırma yapıyorum ama bu konuda yararlı bir şey bulamıyorum. Gerçek görüntüyü oluşturmak yerine neden boş bir görüntü kaydediyor?Tuval resmi sunucu tarafı kaydederken, bir base64 veri dizesinden, boş görüntü üretiyor
JavaScript kodu:
html2canvas([document.getElementById('dadycool')], {
onrendered: function (canvas) {
var data = canvas.toDataURL();
var image = new Image();
image.src = data;
document.getElementById('imagec').appendChild(image);
console.log(data);
$.ajax({
type: "POST",
url: "up.php",
data: {
imgBase64: data
}
}).done(function(o) {
console.log('saved');
});
}
PHP kodu:
<?php
// requires php5
define('localhost/samp/sample2/uploads', 'images/');
$img = $_POST['imgBase64'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = localhost/samp/sample2/uploads . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
?>
: daha iyi, sürekli mantıklı ad verin
... ya: Bu sözdizimini kullanmak gerekir $ img = str_replace ('data: image/jpg; base64,', '', $ img); '$ img = str_replace olmalıdır ('data: image/png; base64,', '', $ img); –
evet doğru !! Kodumun güncelleme sürümünü yazmayı unuttum: D ama benim sorunum hala var. – mkafiyan
PHP bölümünü [PHP-FileUpload] (https://github.com/delight-im/PHP-FileUpload) ve ['DataUriUpload'] ile değiştirebilirsiniz (https://github.com/delight-im/ PHP-FileUpload/blob/d0065c47dcda18c4965ed900bb15190f7af30e79/src/DataUriUpload.php) bileşeni, [burada belgelendirilmiştir] (https://github.com/delight-im/PHP-FileUpload/tree/d0065c47dcda18c4965ed900bb15190f7af30e79#data-uri-uploads). Dosya boyutu sınırlamaları ve birden çok kabul edilen MIME türü gibi başka şeylerle de ilgilenir. – caw