2012-10-03 30 views
1

場景: 客戶端在具有搜索欄的頁面上,它們輸入查詢。這個查詢被傳遞給服務器用php動態生成的第二個頁面。除了提供給php腳本的查詢信息之外,還傳遞了一個變量,該變量允許php腳本確定客戶端瀏覽器是否可以使用Flash。現在,如果flash不可用,php腳本將顯示由cytoscape web生成的網絡圖形的PNG,如果Flash可用,則顯示swf圖形。如何在向瀏覽器提供頁面之前導出細胞景觀網絡圖

問題/問題: 1.)Cytoscape網絡是一個用於顯示圖形的JavaScript庫。它有一個導出功能(http://cytoscapeweb.cytoscape.org/documentation#section/exportNetwork),但只允許瀏覽器下載導出的文件。我希望能夠在php運行時期間導出並保存此文件,然後在未啓用閃存的情況下將其作爲內容代替swf嵌入。如果javascript方法必須在客戶端的瀏覽器中運行,我會怎麼做?

資源

圖導出方法1:http://cytoscapeweb.cytoscape.org/documentation#section/png

圖導出方法2:http://cytoscapeweb.cytoscape.org/documentation#section/exportNetwork

+0

基本上,我想我會需要在運行cytoscapeweb JavaScript的服務器端生成並保存文件存在的一些方法,而且能夠從內部運行JS我的PHP文件。 – ripit

回答

0

類似的問題被問過Cytoscape的網頁谷歌組頁面上。
Here is the link to the question and answer

這裏是說什麼:

如果使用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 

如果你在網上搜索,你會發現類似的插件。

記住PNG()函數必須從就緒()函數中調用,調用vis.draw()之前 - 例如:

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'); 
    // ... 
}); 

輸出文件的名稱是由服務器端代碼做 - 「出口。PHP的」文件在這個例子中。

我希望幫助

相關問題