2012-10-05 20 views
0

我有一個HTML頁面,允許用戶點擊一個鏈接,採取快照的任何活動窗口的。當用戶點擊該按鈕時,控制被傳遞到C# code of an ActiveX插件(存在於CAB文件),它的屏幕截圖,並且在一些臨時位置將其保存。我的問題是:有沒有辦法在瀏覽器中使用activex控件保存圖像,而不發送給服務器?

  1. 我想顯示在對話框中快照的用戶,並要求他將其發送到服務器之前選擇一個名稱。快照保存在臨時位置,並且該位置顯然不可用於代碼,因此我無法在HTML中構造對話框。有沒有辦法解決它?

  2. 我將圖片上傳到服務器。我發現的大多數示例都使用​​技術來上傳文件,但這不是一個選項,因爲我們必須以編程方式上傳文件。 WebClient.uploadFile()會爲我做到這一點,但在服務器端,我把它當作如果文件已通過<html type="file"/>技術,或一些特別的東西上傳(接收端可能是在Java中)?

回答

1

如果能夠修改ActiveX組件,你可以把它暴露位圖作爲二進制和使用JavaScript來獲取字節,並將其呈現爲位圖。就像這樣:

if (window.ActiveXObject) { 
    try { 
     var excelApp = new ActiveXObject ("Excel.Application"); 
     excelApp.Visible = true; 
    } 
    catch (e) { 
     alert (e.message); 
    } 
} 
else { 
    alert ("Your browser does not support this example."); 
} 
+0

爲了揭露,我該ActiveX元件作爲二進制文件內獲取圖像對象,我們需要把它保存爲在某個位置的二進制文件,使用JavaScript來訪問它,但就我知道,JavaScript無法訪問本地文件系統上的文件。我應該在哪裏保存它,以便js可以訪問它? – Daud

+0

沒有。您可以讓您的Activex對象公開一個屬性並從javascript訪問該屬性。 –

+0

謝謝你。我認爲,如果我們設置屬性「形象」,以在ActiveX類圖像的等效二進制數,我們會做 VAR imageBytes = excelApp.image; image.src =「數據:圖像/ PNG; BASE64,」 + Convert.ToBase64String(imageBytes) 但我不能找到任何直方式的圖像對象轉換爲一個字節 – Daud

相關問題