代码之家  ›  专栏  ›  技术社区  ›  enp4yne

将用户制作的SVG(raphael.js)发送到服务器(php),以便通过电子邮件发送

  •  3
  • enp4yne  · 技术社区  · 12 年前

    我有一个页面,用户可以在其中创建自己的SVG图像。现在我想在服务器(php)上访问这些图像,以便将它们发送到电子邮件地址。

    有了这些 instructions 我能够将SVG转换为画布,然后将画布转换为jpeg/png。我不再担心SVG树,因为它不再需要编辑,从而将其转换为普通图像(我认为这会更容易处理,最终我想将该图像作为附件发送到电子邮件中)。

    做这件事最有效的方法是什么?是否可以将转换后的jpeg/png POST到服务器?谢谢你们,有点迷路了。

    1 回复  |  直到 7 年前
        1
  •  4
  •   enp4yne    12 年前

    经过更多的阅读,我找到了一个相当简单的解决方案,如果有人在这里遇到类似的问题,那就是:

    使用将SVG转换为普通画布后 canvg 您可以使用canvas.toDataURL()方法,然后您所需要做的就是POST生成的URL并在服务器上对其进行解码。我使用了一个隐藏的输入字段。注意不要使用JQuery来获取画布,因为JQuery不会返回实际的画布,而是返回一个JQuery对象。

    var canvas = document.getElementById('canvas');
    var dataUrl = canvas.toDataURL();
    $('#hiddenInput').val(dataUrl);
    

    在服务器端:

    $encodeData = $_POST['dataUrl'];
    $encodeData = substr($encodeData, strpos($encodeData, ',') + 1); //strip the URL of its headers
    $decodeData = base64_decode($encodeData);
    $handle = fopen('test.png', 'x+');
    fwrite($handle, $decodeData);
    fclose($handle);
    

    SVG现在以png的形式出现在服务器上。