Вставить изображение из буфера обмена javascript - PullRequest
1 голос
/ 05 января 2012

У нас есть программа, которая хочет получить копию изображения в буфер обмена для вставки в файл на жестком диске, используя javascript / HTA.

Кто-нибудь делал что-то подобное раньше? Или Как я могу создать файл изображения на жестком диске из информации в буфере обмена?

Мы уже используем следующее для текста, но оно не работает для изображений:

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

Ответы [ 2 ]

1 голос
/ 05 января 2012

Вы можете прочитать данные буфера обмена в некоторых поддерживаемых браузерах:

Можно ли читать буфер обмена в Firefox, Safari и Chrome, используя Javascript?

проблема в том, что вы храните эти данные на жестком диске пользователя.Насколько мне известно, Javascript не даст вам доступ к жесткому диску пользователя по соображениям безопасности.Одним из способов обойти это является отправка этих данных на сервер, на котором выполняется скрипт php, который затем продолжит чтение данных и сохранит их в локальном хранилище сервера.Этот скрипт php можно настроить так, чтобы он возвращал полный путь, который использовался при сохранении файла.Ваш метод публикации javascript может затем использовать этот возвращенный путь для загрузки его в браузер, который предложит вашему браузеру отобразить приглашение на загрузку.Затем пользователь может загрузить файл и сохранить его на своем локальном диске.

Он очень запутанный, но может работать.

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 голосов
/ 06 января 2012

Похоже, невозможно вставить изображение из буфера обмена. В итоге мы использовали через командную строку внешнее приложение, такое как Minicap (http://www.softpedia.com/get/Multimedia/Graphic/Graphic-Capture/MiniCap.shtml).

...