使用Javascript将div内容作为图像附加到formData

时间:2017-01-26 22:18:14

标签: javascript jquery html canvas fileserver

我有一个div,内容是从服务器动态填充并绘制一些条形图,之后我尝试获取相同的div并将其附加到表单数据,以便将其保存为服务器上的图像。第一部分完美地工作(绘制图表)。我尝试过下面代码的第二部分只上传了一个没有图表内容的空PNG文件。

 $("#myChart").get(0).toBlob(function(blob) {
                    var image = blob;
                    var forms = document.querySelector('form#chartData');
                    var request = new XMLHttpRequest();
                    var formDatas = new FormData(forms);
                    formDatas.append('chartImage', blob, "chart.png");
                    request.open('post','/sendToServer');
                    request.send(formDatas);
                    request.onreadystatechange = function() {
                        if (request.readyState === 4) {
                            if (request.status === 200) {

                                /*File Uploaded*/

                            }
                        }
                    }
                });

然而,当我使用saveAs(blob, "chart_1.png")时,图像会成功下载,并且图表绘制得很好。 我不知道我是否错过了什么。任何帮助表示赞赏。 我正在使用FileSaver.jscanvas-toBlob.js

1 个答案:

答案 0 :(得分:1)

好的,为了那些可能面临同样问题的人,这就是我最终做的事情并且工作正常:

 html2canvas([document.getElementById('myChart')], {
                        onrendered: function (canvas) {
                            var imagedata = canvas.toDataURL('image/png');
                            var imgdata = imagedata.replace(/^data:image\/(png|jpg);base64,/, "");
                            console.log(imgdata);
        //ajax call to save image inside folder
        $.ajax({
            url: '/sendToServer',
            data: {
             chartImage:imgdata
         },
         type: 'post',
         success: function (response) {   
             console.log(response);
               //$('#image_id img').attr('src', response);
           }
       });
    }
});

然后PHP脚本来处理上传

$imagedata = base64_decode($_POST['imgdata']);
        $filename = md5(uniqid(rand(), true));
        $file = $_SERVER['DOCUMENT_ROOT'] . '/images/'.$filename.'.png';
        $imageurl  = 'http://127.0.0.1'.$filename.'.png';
        file_put_contents($file,$imagedata);
        return $file;

注意: html2canvas.js需要。

我上传的示例图片已附加。enter image description here