2015-07-10 3 views
0

У меня проблемы с сохранением изображений в локальном файле. Все остальные выглядят прекрасно, но изображение не просто сохраняет. Вот фрагмент моего кода.Сохранение диаграмм RGraph локальному компьютеру

function saveImage(){ 
    var xmlhttp; 
    xmlhttp=((window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP")); 
    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
      //do something with the response 
     } 
    } 
    xmlhttp.open("POST","ajxstuff.php",true); 
    var oldCanvas = document.getElementById('cvs').toDataURL("image/png"); 
    var img = new Image(); 
    img.src = oldCanvas; 
    xmlhttp.setRequestHeader("Content-type", "application/upload") 
    xmlhttp.send(oldCanvas); 
} 

Вот ajxstuff.php

<?php 

if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) 
{ 
    // Get the data like you would with traditional post 
    $rawImage=$GLOBALS['HTTP_RAW_POST_DATA']; 

    // Remove the headers 
    $removeHeaders=substr($rawImage, strpos($rawImage, ",")+1); 

    // decode it from base 64 and into image data only 
    $decode=base64_decode($removeHeaders); 

    // save to your server 
    $saveName = 'C:\Users\Administrator\Downloads\image009.png'; 
    $fopen = fopen($saveName, 'wb'); 
    fwrite($fopen, $decode); 
    fclose($fopen); 
} 

?> 
+0

Что на самом деле происходит, когда вы запускаете код? Есть ли ошибки? Что говорят об ошибках? – Kenster

+0

Я использую это для создания отчета. Это не дает никакой ошибки. Отчеты отображаются без графика. Он не получает сохранение в указанном каталоге. –

+0

Если вы используете jQuery, чтобы помочь с вашим AJAX, это будет означать, что вам нужно написать меньше постороннего кода. Например $ .post ('ajxstuff.php', function() {/ * Функция обратного вызова * /}) – Richard

ответ

0

ОК, вот мой пересмотренный ответ: Вы могли бы вместо того, чтобы послать изображение как (что выглядит) файл, отправить его в виде текста - так это то, что вы получаете от toDataUrl() (кодированное изображение с кодировкой base64).

$.post('ajxstuff.php',{ 
    myChart: document.getElementById('cvs').toDataURL() 
}, function() 
{ 
    /* callback */ 
}) 

И в вашем PHP скрипт данные будут отображаться в $ _POST [ «myChart»] - и вы могли бы записать его в файл, например так:

<?php 
    $data = base64_decode($_POST['myChart']); 
    file_put_contents('C:\Users\Administrator\Downloads\image009.png', $data); 
?> 
Смежные вопросы