2013-07-23 149 views
1

我有以下代码可以保存我的谷歌聊天中的图像:将图表图像保存在特定位置GWT

My HMTL;

function getImgData(chartContainer) 
    { 
     var chartArea = chartContainer.getElementsByTagName('iframe') 
[0].contentDocument.getElementById('chartArea'); 

     var svg = chartArea.innerHTML; 
     var doc = chartContainer.ownerDocument; 
     var canvas = doc.createElement('canvas'); 
     canvas.setAttribute('width', chartArea.offsetWidth); 
     canvas.setAttribute('height', chartArea.offsetHeight); 


     canvas.setAttribute(
      'style', 
      'position: absolute; ' + 
      'top: ' + (-chartArea.offsetHeight * 2) + 'px;' + 
      'left: ' + (-chartArea.offsetWidth * 2) + 'px;'); 
     doc.body.appendChild(canvas); 
     canvg(canvas, svg); 
     var imgData = canvas.toDataURL('image/png'); 
     canvas.parentNode.removeChild(canvas); 
     return imgData; 
    } 

    function saveAsImg(chartContainer) 
    { 
     var data = getImgData(chartContainer); 
     window.location = data.replace('image/png', 'image/octet-stream'); 
    } 

的问题是问给用户的位置,我想直保存它,我的意思是,不问任何特定的位置,因为我需要在服务器端后,该位置包含此图片为一个PDF文件,所以我需要知道的位置,我需要做到它对用户透明。

谢谢你的优势。

回答

0

您是否希望将图像保存在服务器上而不是客户端上?如果是这样,您需要在服务器上有一项服务,可以接受上载中的图像并将其保存为文件。然后,你可以像这样通过AJAX发送图像:

function uploadImage (chartContainer) { 
    // using jQuery AJAX 
    $.ajax({ 
     url: '/path/to/image/save/service', 
     data: { 
      image: getImgData(chartContainer) 
     }, 
     type: 'POST' 
    }); 
} 

这可能需要调整,以得到完全正确,但基本概念是到位。