服务器端的SVG到JSON?

时间:2012-03-20 14:15:38

标签: php json svg server-side

我们的Web应用程序在服务器上存储SVG文件,我们希望从服务器端的SVG文件中获取JSON输出。 我查看了PETESAIA's SVG to JSON php程序。 但我得到的输出是null或空数组。

<?php
require_once “PeachSVG.php”;
$filename = “filename-2012-03-06.svg”;
$json = PeachSVG::convert($filename, $to_json = true);
//$json = convert($filename, $to_json = true);   //also used this one
var_dump(json_decode($json, true));
?>

此php代码,PeachSVG.php和svg文件位于同一目录中。

任何人都可以提出我的错误吗?

或者在服务器端使用SVG到JSON的任何替代方法

编辑:回应@halfer及其对我们为什么需要SVG服务器端验证(转换为JSON)的查询。 我们有一个cleint-side SVG(RaphaelJs)网络应用程序,用户可以在其中执行某些操作,输出发送到我们的服务器并保存在我们的服务器上并发布在网站上。我们希望确保在发布到网站之前验证输出文件。为此,我们需要进行服务器端验证,以确保用户不会滥用应用程序中设置的规则。

无法使用Raphael.serialize,因为它会在客户端将SVG转换为JSON,这可能会被用户滥用。所以我们将SVG文档作为字符串发送到服务器端。

3 个答案:

答案 0 :(得分:1)

如果您可以在服务器上安装Node.js,您可以使用fabric.js来解析SVG,然后将对象导出为JSON。

https://github.com/kangax/fabric.js

http://kangax.github.com/fabric.js/svg_rendering/

答案 1 :(得分:0)

你的脚本在我的localhost服务器上运行得很好,但我必须删除你的引号,并用我的记事本++中的一个替换它,它看起来像字符串引号给我。希望如果还没有找到解决方案,这会有所帮助

答案 2 :(得分:0)

您在require_once()函数中犯了一个错误。 php文件的路径应放在括号中,如下所示:

export default function Connector() {
    return function wrap(WrappedComponent) {
        class MyComponent extends PureComponent {
            componentDidMount(){
                //find node here and attach event listener
            }
            componentWillUnmount(){
                //remove event listener
            }
            ....
            render() {
               <WrappedComponent 
                   {...this.props}
               />
            }
        }
    }
}

对于字符串,您似乎使用的双引号不好。您可能从某个地方复制了它们。因为它们是左双引号“”“(U + 201C)和右双引号”“”(U + 201D)。在代码中,它看起来应该不是这样:

ReactDOM.findDOMNode

但是像这样:

require_once("PeachSVG.php");