Я получил модуль для электронной подписи, позволяющий пользователю открывать документ, подписывать его и загружать на мой сервер. Поэтому я использовал 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);
?>