2012-01-05 2 views
1

У нас есть программа, которая хочет получить копию изображения в буфер обмена для вставки в файл на HDD с помощью 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 может использовать этот возвращенный путь для загрузки его в браузере, который заставит ваш браузер отобразить приглашение загрузки. Затем пользователь может загрузить файл и сохранить его на своем локальном диске.

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

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-приложения, а не веб-страницей. –

+0

Спасибо за ответ. Мы работаем с HTA в течение некоторого времени. Единственная часть, которая мне нужна прямо сейчас, - это получение изображения из буфера обмена. Хотя ответ очень точный. –

Смежные вопросы