Сохранение сгенерированного 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) и можно подставлять данные из любых ключей куда угодно

→ Ссылка