2012-01-05 190 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