Я работаю над преобразованием холста в изображение и загрузкой его на сервер, когда пользователь отправит форму.
Изображение размещено правильно, но на сервере оно выглядит пустым.
Вот мой код, (использую телефонный разрыв)
.drawImage ()
находится в main.js .. но canvas..toDataURL
находится в скрипте в HTML
<script>
function insert()
{
var img = document.getElementById("myCanvas")[0].toDataURL("image/jpeg");
$.ajax({
type: "POST",
url: "http://*******************/create.php?title="+ ($("#myTitle").val())+"&description="+$("#myDesc").val()+"&price="+$("#myPrice").val(),
data: {img: img},
success: function(data)
{
alert("inserted");
}});
</script>
PHP
$img = $_POST['img'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
Любая идея ?
РЕДАКТИРОВАТЬ !!!
Наконец-то это ЗАГРУЗКА !!!
Спасибо Джеку Франзену за его предложение.
Я изменил код PHP на
$img = $_POST['img'];
$img = str_replace('data:image/jpeg;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = uniqid() . '.jpg';
$success = file_put_contents($file, $data);
и это работает как шарм! 🙂
Я знаю вашу проблему! Ваш код PHP ищет «PNG», но ваш JavaScript генерирует «JPG»
Просто переключитесь на DataRL («изображение / JPEG») ToDataURL ()
Других решений пока нет …