2012-01-05 263 views
1

我們有一個程序,希望通過javascript/HTA將圖像複製到剪貼板中以粘貼到硬盤上的文件中。從剪貼板粘貼圖片javascript

有沒有人做過這樣的事情?或者如何從剪貼板中的信息創建硬盤上的圖像文件?

我們已經對文本使用以下,但它並不適用於圖像的工作:

clipboardData.setData("Text", 'To Copy to clipboard'); 
clipboardData.getData("Text"); // To copy from clipboard 

回答

1

你可進行讀取剪貼板數據,一些支持的瀏覽器:

Is it possible to read the clipboard in Firefox, Safari and Chrome using Javascript?

的問題在於你將這些數據存儲在用戶的硬盤上。由於安全原因,根據我的知識,Javascript將不允許您訪問用戶的硬盤驅動器。解決此問題的一種方法是將此數據發送到運行php腳本的服務器,然後該腳本將繼續讀取數據並將其保存到服務器的本地存儲。這個PHP腳本可以設置爲返回保存文件時使用的完整路徑。然後,您的javascript post方法可以使用此返回的路徑將其加載到瀏覽器中,該瀏覽器將提示您的瀏覽器顯示下載提示。然後用戶可以下載該文件並將其保存到本地驅動器。

它非常令人費解,但可以工作。

RE:HTA

HTA只適用於IE瀏覽器,是不是很受歡迎,所以你將有一些問題,找到適合您需要的確切任務的代碼資源。這是一些代碼,我發現用於讀取和寫入文件到磁盤

<!-- 
// CAREFUL -- no error checking 
function readFile() 
{ 
    var fso, fileHandle, contents, yourfilename; 
    fso = new ActiveXObject("Scripting.FileSystemObject"); 
    fileHandle = fso.OpenTextFile(document.editor.yourfilename.value, 1); 
    contents = fileHandle.ReadAll();      

    if (contents) 
    document.all("fileContents").value = contents;  

    fileHandle.close(); 

} 

function writeFile() 
{ 
    var fso, fileHandle, yourfilename; 
    fso = new ActiveXObject("Scripting.FileSystemObject"); 
    fileHandle = fso.CreateTextFile(document.editor.yourfilename.value, true);  
    fileHandle.write(document.all("fileContents").value);   
    fileHandle.close(); 
} 


//--> 

然後,你將不得不這段代碼使用window.clipboardData.getData功能用於獲取存儲剪貼板中的內容結合起來。我從來沒有做HTA,所以我不能給你任何幫助。

+0

使用HTA允許您執行此操作。該頁面符合HTML應用程序,並不是一個真正的網頁。 – 2012-01-05 17:02:02

+0

感謝您的回覆。我們一直在與HTA合作一段時間。我現在唯一需要的部分是從剪貼板獲取圖像。雖然答案非常準確。 – 2012-01-05 17:48:10