我已经设法构建了自己的解决方案,效果很好。它将Java 文件上传小程序放置在您要附加屏幕截图的页面上。小程序有两个按钮:
- “粘贴屏幕截图”,将剪贴板中的图像粘贴到小程序中
- “上传截图”,将粘贴的图像上传到 Mantis 服务器上的 /tmp 目录,并使用 javascript 回调将上传图像的自动生成的文件名放入表单字段中。
提交表单后,Mantis 中的一个新功能使用表单字段中的文件名将图像从 /tmp 移动到最终位置,并像处理其他附件一样处理图像。如果表单从未提交,则上传的文件仍保留在 /tmp 中,最终将被服务器清除。
它运行良好,但有一个我无法避免的缺点:我使用 Java 来访问客户端的剪贴板,但这需要破坏 JVM 沙箱。显然,如果您对小程序进行数字签名,就可以做到这一点,这需要每年向 Verisign 这样的公司支付相当昂贵的费用(大约 500 美元)(目前像 cacert.org 这样的免费选项的用处仍然有限)。
允许 Java 小程序访问剪贴板的另一种方法是在您的主目录或配置文件目录中创建一个名为 .java.policy 的文件。此文件应包含以下内容(将域替换为托管 Java 小程序的域):
grant codeBase "http://bugs.example.com/-" {
permission java.awt.AWTPermission "accessClipboard";
};
值得庆幸的是,该解决方案是跨浏览器兼容的,因为无论使用何种浏览器,JVM 总是检查相同的文件。由于我的解决方案需要在每台客户端计算机上都有这个 .java.policy 文件,我认为它并不理想,但可以在受控的公司环境中使用。