Использовал html2canvas для захвата изображения, пытался загрузить его на сервер, но он не работал постоянно - PullRequest
1 голос
/ 15 января 2020

Я получил модуль для электронной подписи, позволяющий пользователю открывать документ, подписывать его и загружать на мой сервер. Поэтому я использовал HTML2Canvas, чтобы захватить подписанный документ, а затем загрузить изображение на мой сервер. Моя проблема здесь в том, что модуль не стабилен, иногда он работает, но иногда загруженное изображение было 0 байтов (пусто). Хотелось бы знать, может ли кто-нибудь порекомендовать по этому вопросу. Ниже приведены мои сценарии:

HTML2Canvas

<div id="pdf" style="page-break-after: always; padding:3px;">
  Some codes
</div>
<script>
    (function($){
        $(document).ready(function(){

            $("#submit3").click(function(e) {

                html2canvas(document.querySelector('#pdf'), {scale: 2}).then(canvas => {

                    var sono = "<?php echo $sono; ?>";
                    var photo = canvas.toDataURL('image/jpeg');  

                    var xhr = new XMLHttpRequest();

                      xhr.open('POST', 'upload.php', true);
                      xhr.send(photo + "sono=" + sono);

                });

            })
        })
    })(jQuery)
</script>

Загрузка. php

<?php

    /*Get data */
    $data = file_get_contents('php://input');

    $fsono = strpos($data, 'sono=');
    $sono = substr($data, $fsono + 5, 4);

    list($type, $data) = explode(';', $data);
    list(, $data)      = explode(',', $data);

    $data = base64_decode($data);

    $fname = 'Signed-'.$sono.'.jpg'; // name the file
    //$fname = '123';

    $file = fopen("uploads/" .$fname, 'w'); // open the file path
    fwrite($file, $data); //save data
    fclose($file);
?>
...