Мне удалось создать собственное решение, которое работает достаточно хорошо. Он размещает апплет загрузки файлов Java на страницах, где вы хотите прикрепить скриншот. Апплет имеет две кнопки:
- «вставить скриншот», который вставляет изображение из буфера обмена в апплет
- «загрузить снимок экрана», который загружает вставленное изображение в каталог / tmp на сервере Mantis и использует обратный вызов javascript для помещения автоматически сгенерированного имени файла загруженного изображения в поле формы.
После отправки формы новая функция в Mantis использует имя файла в поле формы, чтобы переместить изображение из / tmp в конечное местоположение, и обрабатывает изображение так же, как и другие вложения. Если форма никогда не отправляется, загруженный файл остается в / tmp и в конечном итоге будет удален сервером.
Это работает хорошо, но у меня есть один недостаток, который я не могу избежать: я использую Java для получения доступа к буферу обмена клиента, но это требует взлома песочницы JVM. По-видимому, это можно сделать, если вы подпишете апплет цифровой подписью, что потребует довольно дорогой ежегодной оплаты (около $ 500) такой компании, как Verisign (в настоящее время бесплатные возможности, такие как cacert.org, по-прежнему ограничены в своей полезности).
Еще один способ разрешить доступ апплетов Java к буферу обмена - создать файл с именем .java.policy в вашем домашнем каталоге или каталоге профиля. Этот файл должен содержать следующее (замените домен доменом, в котором находится ваш Java-апплет):
grant codeBase "http://bugs.example.com/-" {
permission java.awt.AWTPermission "accessClipboard";
};
К счастью, решение совместимо с различными браузерами, поскольку JVM всегда проверяет один и тот же файл независимо от используемого браузера. Поскольку мое решение требует наличия этого файла .java.policy на каждом клиентском компьютере, я не считаю его идеальным, но работоспособным в контролируемой среде компании.