Уважаемые программисты, нужен ваш совет. Я научился отправлять данные объекта js и canvas (картинка) на сервер php.
Т.е. у меня есть объект js с данными
let obj={name:"Tom", age:'30'}
и
несколько картинок.
У меня не получается их отправить и принять одновременно на стороне сервера. Как я думаю, необходимо поочередно вызывать методы fetch или как лучше, прошу помощи. Заранее всем спасибо!
btn_send.addEventListener('click',async() => {
//отправляем объект
let response = await fetch('web_tp_word.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify(data)
});
if (response.ok) let json = await response.json();
//отправляем картинку канвас
let blob = await new Promise(resolve => canvasElem.toBlob(resolve, 'image/png'));
let formData = new FormData();
formData.append('canvas_field', blob, 'canvas.png');
let response2 = await fetch('web_tp_word.php', {
method: 'POST',
body: formData
});
});
серверу не удается их принять одновременно:
//1. получаем данные JSON
$postData = file_get_contents('php://input');
$data = json_decode($postData, true);
//2. пытаемся получить одну картинку
if (!@copy($_FILES['canvas_field']['tmp_name'], $path . $_FILES['canvas_field']['name']))
echo 'Что-то пошло не так';
else
echo 'Загрузка удачна <a href="' . $path . $_FILES['canvas_field']['name'] . '">Посмотреть</a> ' ;