2016-11-17 1 views
1

Я использую html2canvas и Canvas2Image для создания png-изображения с холста и сохранения его на сервере с уникальным именем файла.Обратный вызов уникального имени файла с jquery php

Я хотел бы знать, как получить и показать уникальное имя файла после его создания.

JQuery

$(function() { 
       $("#convertcanvas").click(function() { 
        html2canvas($("#mycanvas"), { 
         onrendered: function(canvas) { 
         theCanvas = canvas; 
         document.body.appendChild(canvas); 

         // Convert for sharing   

       var img = canvas.toDataURL("image/png",1.0); 
       $.ajax({ 
        url:'save.php', 
        type:'POST', 
        data:{ 
          data:img 
         } 
       }); 

PHP

<?php 
    $data = $_POST['data']; 
    $data = substr($data,strpos($data,",")+1); 
    $data = base64_decode($data); 
    $file = 'images/myfile'.md5(uniqid()).'.png'; 
    file_put_contents($file, $data); 
?> 

Заранее спасибо за любую помощь.

ответ

1

Вы можете получить имя файла, вернув его на свой PHP и поймав его в AJAX с помощью метода succes.

PHP

<?php 
    $data = $_POST['data']; 
    $data = substr($data,strpos($data,",")+1); 
    $data = base64_decode($data); 
    $filename = 'myfile'.md5(uniqid()).'.png'; // <-- Added this because you probably don't want to return the image folder. 
    $path = 'images/'.$filename; 
    file_put_contents($path, $data); 
    echo $filename; // <-- echo your new filename! 
?> 

JQuery

$.ajax({ 
    url:'save.php', 
    type:'POST', 
    data:{ 
     data:img 
    }, 
    success: function(data) { 
     alert(data); // <-- here is your filename 
     handleData(data); 
    } 
}); 
+0

спасибо за ответ на это. Это отлично работает. – belakbox

0

Вы можете просто вернуть имя файла внутри массива и возвращает его как JSON с json_encode.

PHP

<?php 
    $data = $_POST['data']; 
    $data = substr($data,strpos($data,",")+1); 
    $data = base64_decode($data); 
    $file = 'images/myfile'.md5(uniqid()).'.png'; 
    file_put_contents($file, $data); 
    echo json_encode(array('filename' => $file)); 
?> 

И в сценарии можно указать ожидать данные JSon, установив свойство 'DATATYPE' в "JSON". После этого вы можете использовать функцию .done(), чтобы сделать все, что вы хотите с возвращенными данными, для его регистрации Пример консоли:

JQuery

var img = canvas.toDataURL("image/png",1.0); 
    $.ajax({ 
     url:'save.php', 
     type:'POST', 
     dataType: 'json', 
     data:{ 
      data:img 
     } 
    }).done(function(data){ 
     console.log(data); 
    }); 
Смежные вопросы