私は非常にうまく機能する独自のソリューションを構築することができました。スクリーンショットを添付するページに Java ファイル アップロード アプレットを配置します。アプレットには 2 つのボタンがあります。
- クリップボードからアプレットに画像を貼り付ける「スクリーンショットの貼り付け」
- 「スクリーンショットのアップロード」: 貼り付けた画像を Mantis サーバーの /tmp ディレクトリにアップロードし、javascript コールバックを使用して、アップロードされた画像の自動生成されたファイル名をフォーム フィールドに配置します。
フォームが送信されると、Mantis の新しい関数がフォーム フィールドのファイル名を使用して画像を /tmp から最終的な場所に移動し、他の添付ファイルと同様に画像を処理します。フォームが送信されない場合、アップロードされたファイルは /tmp に残り、最終的にサーバーによって削除されます。
うまく機能しますが、避けられない欠点が 1 つあります。クライアントのクリップボードにアクセスするために Java を使用していますが、JVM サンドボックスを壊す必要があります。どうやらこれは、Verisign のような会社へのかなり高額な年間支払い (500 ドル程度) を必要とするアプレットにデジタル署名すれば実行できるようです (現在、cacert.org のような無料のオプションはまだ有用性が限られています)。
Java アプレットがクリップボードにアクセスできるようにするもう 1 つの方法は、ホーム ディレクトリまたはプロファイル ディレクトリに .java.policy というファイルを作成することです。このファイルには次のものが含まれている必要があります (ドメインを Java アプレットをホストするドメインに置き換えます)。
grant codeBase "http://bugs.example.com/-" {
permission java.awt.AWTPermission "accessClipboard";
};
ありがたいことに、JVM は使用するブラウザーに関係なく常に同じファイルをチェックするため、このソリューションはブラウザー間で互換性があります。私のソリューションでは、この .java.policy ファイルを各クライアント コンピュータに配置する必要があるため、理想的ではありませんが、管理された企業環境では実行可能です。