Как сохранить захваченное изображение в папке, используя codeigniter (изображение, захваченное кодом javascript)? - PullRequest
0 голосов
/ 02 июня 2018

Привет всем, я написал код для захвата изображения тега div при нажатии на кнопку, и код JavaScript захватит это изображение, но я хочу сохранить это захваченное изображение, используя codeigniter, но мы не можем использовать метод загрузки codeigniter по умолчанию, потому что только загрузкаработать с файлом входного типа, который создает один объект, но здесь я получаю захваченное изображение с помощью javascript, поэтому я хочу загрузить это изображение в папку, поэтому, пожалуйста, скажите мне, как это сделать, используя codeigniter.below я упомянул мой код.

Html code....
<div id="target" style="border: 1px solid #CCC;padding: 5px;margin: 5px;">
    <div>
        <p>PHP is a server-side scripting language designed primarily for web development.</p>
    </div>
</div>
 <form method="POST" enctype="multipart/form-data" id="form1">
        <input type="hidden" name="img_value" id="img_value" value="" />
    </form>
<input type="submit" value="Screenshot" onclick="capture();" />

javascript код для захваченного изображения и вызов ajax для сохранения изображения

<script type="text/javascript">
        function capture() {
            $('#target').html2canvas({
                onrendered: function (canvas) {
                    //Set hidden field's value to image data
                    $('#img_value').val(canvas.toDataURL("image/png"));
                    //Submit the form1
                    var hid_img=$("#img_value").val();
                    $.ajax({
                        url: "<?= base_url('controller/save_img') ?>",
                        type: "POST",
                        data: {
                            hid_img: hid_img,
                        },
                        success: function (response) {

                            $(".show_img").html(response);

                        }
                    });
                }
            });
        }
    </script>

код в методе контроллера codeigniter для сохранения изображения в папке ...

public function save_img() {

$data = $this->input->post($hid_img);
    $file = md5(uniqid()) . '.png';

    // remove "data:image/png;base64,"
    $uri =  substr($data,strpos($data,",")+1);

    // save to file in uploads folder of codeigniter
    file_put_contents('./uploads'.$file, base64_decode($uri));

}
to store image in table
$res=$this->db->insert('demo',array('img'=>base_url('uploads/').$file));
    $detail = $this->db->select('*')->from('demo')->where('id', $this->db->insert_id())->get()->row();
    echo '<img src="'.base_url('uploads/').$detail->message.'" style="width:500px;"/>';

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Как вы правильно выяснили, библиотека загрузки работает только с file входами, а не с base64 потоками.Таким образом, вы не можете использовать это.

Используя ваш метод, у вас есть несколько ошибок в коде, которые необходимо устранить:

  1. $this->input->post($hid_img) должно быть $this->input->post('hid_img')
  2. ./uploads, вероятно, должен иметь косую черту: './uploads/'.$file
0 голосов
/ 02 июня 2018

Используйте этот образец.Это работает хорошо.Во-первых, если вы проверите загрузку библиотеки.

 $config = array(
        'upload_path' => "./uploads/",
        'allowed_types' => "gif|jpg|png|jpeg|pdf",
        'overwrite' => TRUE,
        'max_size' => "2048000", // Can be set to particular file size , here it is 2 MB(2048 Kb)
        'max_height' => "768",
        'max_width' => "1024"
        );
        $this->load->library('upload', $config);


        if(!$this->upload->do_upload('taskcat_img'))  
        {  
            echo $this->upload->display_errors();  
        }  
        else  
        {                   
            $data = $this->upload->data();  
            $imgval = array('success' => 'success' ,'data_image' => $data["file_name"]);  
            echo json_encode($imgval );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...