Сохранение сгенерированного QR кода на сервер
Использую библиотеку QR Code Styling для генерации QR и мне нужно сохранить их на сервер с уникальным идентификатором. В js не силен, но получилось сделать таким вот образом:
const qrCode = new QRCodeStyling({
width: 490,
height: 490,
type: "canvas",
data: "https://www.vk.com/",
image: "./img/gvoice_i.png",
dotsOptions: {
color: "#fff",
type: "rounded"
},
cornersSquareOptions: {
type: "extra-rounded"
},
backgroundOptions: {
color: "transparent"},
imageOptions: {
imageSize: 0.5,
saveAsBlob: true,
crossOrigin: "anonymous",
margin: 5
}
});
var pngBlob = qrCode.getRawData('png');
pngBlob.then(value => sendAjax(value));
function sendAjax(pngString) {
$.ajax('ajax.php',{
'data': pngString,
'type': 'POST',
'processData': false,
'contentType': 'image/png'
});
}
Таким образом, QR генерируется и обрабатывается в PHP:
<?php
$png = file_get_contents('php://input');
$myfile = fopen("white.png", "w");
fwrite($myfile, $png);
?>
PNG-файл нормально сохраняется под именем "white", но мне нужно его сохранять под уникальным наименованием.
Каким образом можно передать в обработчик еще и имя файла?
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
в ajax запросе написать
'data': { photoName: pngString, customName: 'Whatever' }
на серверной части
$queryString = file_get_contents('php://input');
parse_str($queryString, $data);
Теперь в data будет ассоциативный массив (в данном случае с ключами photoName и customName) и можно подставлять данные из любых ключей куда угодно