1

场景: 客户在带有搜索栏的页面上,他们输入查询。该查询被传递到服务器使用 php 动态生成的第二个页面。除了提供给 php 脚本的查询信息之外,还传递了一个变量,该变量允许 php 脚本确定客户端浏览器是否可以使用 flash。现在,如果 flash 不可用,php 脚本将显示由 cytoscape web 生成的网络图的 png,如果 flash 可用,则显示该图的 swf。

问题/问题: 1.) Cytoscape web 是一个用于显示图形的 javascript 库。它具有导出功能(http://cytoscapeweb.cytoscape.org/documentation#section/exportNetwork),但仅允许浏览器下载导出的文件。我希望能够在 php 运行时导出并保存此文件,然后如果未启用闪存,则将其作为内容嵌入以代替 swf。如果必须在客户端的浏览器中运行 javascript 方法,我将如何执行此操作?

资源

图导出方法一: http ://cytoscapeweb.cytoscape.org/documentation#section/png

图导出方法二: http ://cytoscapeweb.cytoscape.org/documentation#section/exportNetwork

4

1 回答 1

0

在 cytoscape web google groups 页面上提出了类似的问题。
这是问题和答案的链接

以下是所说的:

如果使用 png(),则只能将图像的字节作为字符串(如 Base64)。它不会将图像导出到服务器端,也不会使其可供下载。为此,您必须自己将字符串提交到服务器端,再次将 base64 转换为字节,然后让服务器组件(例如 PHP、Java Servlet)将字节流回浏览器,以便用户下载图片。

还可以选择使用 Flash 组件/插件来获取字节并使其无需 Web 服务器即可下载。当您选择“保存文件”菜单选项时,这正是 Cytoscape Web 演示应用程序 (http://cytoscapeweb.cytoscape.org/demo) 所做的。您可以从演示的 JavaScript 文件中复制示例并使用我们为此开发的 Flash 库。它没有很好的记录,所以我想它可能有点复杂。无论如何,如果您想尝试一下,请看一下:

- http://cytoscapeweb.cytoscape.org/js/content/demo.js - search for "org.cytoscapeweb.demo.Exporter"
- http://chianti.ucsd.edu/svn/cytoscapeweb/trunk/file/ - you can download the component project from Subversion with the command:  svn checkout http://chianti.ucsd.edu/svn/cytoscapeweb/trunk/file cwfile-read-only

如果您搜索互联网,您可能会找到类似的插件。

请记住,在调用 vis.draw() 之前,必须从 ready() 函数内部调用 png() 函数 - 例如:

vis.ready(function() {
    var png = vis.png();
// handle the png bytes here:
    alert(png);
});
vis.draw(draw_options);

一个更简单的选择是使用 exportNetwork() 函数,它需要一个服务器端部分。见http://cytoscapeweb.cytoscape.org/documentation/cytoscape_web#section/exportNetwork;它甚至包括一个 PHP 示例。JavaScript 部分将是这样的:

vis.ready(function() {
    // ...
vis.exportNetwork('png', 'export.php?type=png');
    // ...
});

输出文件的名称由服务器端代码完成——本例中的“export.php”文件。

我希望这会有所帮助

于 2012-12-28T19:14:46.737 回答