从剪贴板javascript粘贴图像

时间:2012-01-05 16:50:42

标签: javascript image clipboard copy-paste hta

我们有一个程序想要将图像副本放入剪贴板,使用javascript / HTA粘贴到HDD上的文件中。

有没有人之前做过这样的事情?或者如何从剪贴板中的信息在HDD上创建图像文件?

我们已经在文本中使用以下内容,但它不适用于图像:

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

2 个答案:

答案 0 :(得分: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所以我不能给你任何帮助。

答案 1 :(得分:0)

看起来无法从剪贴板粘贴图像。我们最终使用命令行使用了Minicaphttp://www.softpedia.com/get/Multimedia/Graphic/Graphic-Capture/MiniCap.shtml)等外部应用程序。