问题描述:用户按下打印屏幕按钮,然后单击应用程序上的粘贴按钮。该图像将存储在服务器上。
我用Google搜索并在Stack上找到答案并使用以下代码
public Image getImageFromClipboard()
{
Clipboard systemClipboard = (Clipboard) AccessController.doPrivileged(new PrivilegedAction() {
public Object run()
{
Clipboard tempClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
return tempClipboard;
}
});
// get the contents on the clipboard in a
// Transferable object
Transferable clipboardContents = systemClipboard.getContents(null);
// check if contents are empty, if so, return null
if (clipboardContents == null)
return null;
else
try
{
// make sure content on clipboard is
// falls under a format supported by the
// imageFlavor Flavor
if (clipboardContents.isDataFlavorSupported(DataFlavor.imageFlavor))
{
// convert the Transferable object
// to an Image object
Image image = (Image) clipboardContents.getTransferData(DataFlavor.imageFlavor);
return image;
}
} catch (UnsupportedFlavorException ufe)
{
ufe.printStackTrace();
} catch (IOException ioe)
{
ioe.printStackTrace();
}
/*try {
Robot robot;
robot = new Robot();
final GraphicsConfiguration config
= GraphicsEnvironment.getLocalGraphicsEnvironment()
.getDefaultScreenDevice().getDefaultConfiguration();
final BufferedImage screenshot = robot.createScreenCapture(config.getBounds());
return screenshot;
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
return null;
}
如果应用程序在我的机器上运行并按Print Screen,则此代码可以正常工作。图像可用并存储。
我的问题是,当我在单独的服务器上部署此应用程序并在另一台计算机上运行应用程序时。当用户按下“打印”屏幕,然后单击应用程序中的按钮。服务器将找不到任何图像,因为它看起来在剪贴板和服务器剪贴板上没有可用的图像。客户端桌面剪贴板上提供了图像。
请帮助我使用JSF / primefaces从服务器访问客户端剪贴板。或者其他替代方式。
我使用的是primefaces 3.4,服务器是weblogic 10.3.5。
答案 0 :(得分:0)
如果您的应用程序将在不同的浏览器上运行,您将发现没有100%可靠的方法,除非您使用其他一些技术(如Flash)实现某些特定组件。
我真的会使用保存图像并通过普通文件上传表单将其上传到服务器的方法。否则,您将对浏览器安全问题感到头疼。
此致