1

我们正在使用基于 PHP 的 Mantis bugtracker(版本 1.1.8)。为了简化添加错误的工作流程,我们希望添加一个选项,将剪贴板中的屏幕截图直接粘贴到“新错误表单”中。

屏幕截图使错误报告对开发人员更有价值,因此我希望尽可能轻松地添加它们。最好不使用外部应用程序,而是在浏览器中。

我已经到处寻找添加这个的方法,但没有运气。其他人如何做到这一点?我错过了一些明显的东西吗?

编辑:bugtracker 是私人的,在一家小公司,所以我愿意接受例如 Java 小程序存在的安全风险。

4

5 回答 5

4

除了在客户端上使用 ActiveX、applet 或 Flash 类型的技术之外,没有其他方法可以做到这一点。即便如此,仍有许多安全障碍。浏览器没有简单的方法将剪贴板中的内容转换为适合上传到网站的格式,即使这样做也会存在安全问题。例如,页面中的恶意代码可能会从剪贴板复制敏感信息并将其发送到页面的站点,而您甚至都不知道它正在发生。

更新:有一个独立的屏幕捕获实用程序声称可以与 Mantis(以及一大堆其他错误跟踪器)一起使用。这可能是您最好的选择。

于 2009-07-16T14:23:58.577 回答
2

有一个用于 Atlassian Confluence 的拖放图像附件 Java 小程序,它具有您需要的功能。它只支持 Confluence,但由于源代码在 BSD 下免费提供,您应该能够根据您的需要对其进行自定义。

忘记链接: http ://confluence.atlassian.com/display/CONFEXT/Drag+and+Drop+Image+Attacher+Plugin

于 2009-07-16T14:57:03.033 回答
2

我已经设法构建了自己的解决方案,效果很好。它将Java 文件上传小程序放置在您要附加屏幕截图的页面上。小程序有两个按钮:

  1. “粘贴屏幕截图”,将剪贴板中的图像粘贴到小程序中
  2. “上传截图”,将粘贴的图像上传到 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 文件,我认为它并不理想,但可以在受控的公司环境中使用。

于 2009-08-25T08:51:04.793 回答
1

我也看过这个。没有真正简单的方法,所以我允许他们上传无限数量的文件,然后这些文件将“附加”到那个错误。实际上结果更好,因为他们可以上传屏幕截图、电子表格、word 文档等。

与您的一样,这是一个仅限内部的站点,因此安全性很轻。我在 ASP.Net 中这样做了,但一般的想法是,当他们查看页面的错误时,他们有一个上传框。当他们上传一些东西时,我会预先附加错误 ID。所以 ScreenShot.jpg 变成 233_ScreenShot.jpg。

在该页面上还有一个网格(GridView),它绑定到我的上传目录中以该错误 ID 开头的所有文件名。

要查看它的外观,请单击此处。

于 2009-07-16T14:46:48.797 回答
1

对于面向技术的用户,总是有可能使用Eclipse + Mylyn + Mylyn-Mantis 连接器

然后上传截图很容易:

截图上传 http://img216.imageshack.us/img216/246/screenshotattachments1.png

于 2009-07-16T14:56:08.510 回答