Laravel с html2canvas не сохраняя картинку - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь использовать html2canvas и laravel.Но когда я нажимаю кнопку Save Report, изображение не сохраняется.Я также не получаю никакой ошибки.Пожалуйста, смотрите мой код ниже.

index.blade.php

<body>
   <div class="container">
       <div class="content">
           <div class="title">Laravel 5</div>
           <p class="paragraph">
             Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quia, veritatis dolores dicta at atque nobis maxime ea explicabo facilis molestiae voluptatibus nam nesciunt necessitatibus placeat ducimus magni nihil pariatur eligendi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fuga adipisci magnam in. Earum, nihil, expedita, blanditiis, iste ipsam amet obcaecati culpa ad quod itaque esse facere veritatis ratione ipsum quis.
           </p>
           <p class="paragraph">
             Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quia, veritatis dolores dicta at atque nobis maxime ea explicabo facilis molestiae voluptatibus nam nesciunt necessitatibus placeat ducimus magni nihil pariatur eligendi.
            </p>
       </div>

        <button id="saveReport">Save Report</button>
    </div>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>
    <script src="{{ asset('js/app.js') }}"></script>
</body>

app.js

$(document).ready(function(){

    var element = $('.content');

    $('#saveReport').on('click', function(){
        html2canvas(element, {
            background: '#ffffff',
            onrendered: function(canvas){
                var imgData = canvas.toDataURL('image/jpeg');
                $.ajax({
                    url: '/save-dashboard-report',
                    type: 'post',
                    dataType: 'text',
                    data: {
                        base64data: imgData
                    }
                });
                alert('Success!');
                console.log(imgData);
            }
        });
    });

});

controller

public function save(){

    $data = $_REQUEST['base64data'];
    $image = explode('base64', $data);
    file_put_contents('1.jpg', base64_decode($image[1]));

}

routes

Route::post('save-dashboard-report', 'DashboardReportController@save');

1 Ответ

0 голосов
/ 27 декабря 2018

Попробуйте это:

 public function save(){
       // decode your image first.
       $imagedata = base64_decode($_REQUEST['base64data']);
       // make random name
       $filename = md5(uniqid(rand(), true));
       //path where you want to upload image
       $file = $_SERVER['DOCUMENT_ROOT'] . '/uploads/'.$filename.'.png';
       file_put_contents($file,$imagedata); <-- Please follow this.
    }
...