小程序 – 无法写入文件

我正在尝试从applet编写示例文件但是无法正常工作。 以下是代码。

小程序

public class PasteImageApplet extends JApplet { Clipboard clipboard; Toolkit toolkit; JLabel lbl; public String getClipboardImageURL(String server) { lbl.setText("pasting image"); String url = ""; try { DataFlavor dataFlavor = DataFlavor.imageFlavor; System.out.println(dataFlavor.getDefaultRepresentationClass()); Object object = null; try { object = clipboard.getContents(null) .getTransferData(dataFlavor); JOptionPane.showMessageDialog(null,"Image found."); try { Writer output = null; String text = "Test Write File"; File file = new File("write.txt"); output = new BufferedWriter(new FileWriter(file)); output.write(text); output.close(); } catch(Exception ex) { JOptionPane.showMessageDialog(null,"Error writing file"+ex); return "" ; } //return ""; } catch (Exception e) { JOptionPane.showMessageDialog(null, "No image found."); return ""; } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Error."+e); return ""; } return url; } public void init() { lbl = new JLabel(""); lbl.setText("applet started"); add(lbl); toolkit = Toolkit.getDefaultToolkit(); clipboard = toolkit.getSystemClipboard(); } } 

HTML

   Clipboard image demo  function loadApplet() { // Deferred load to display text first document.getElementById("applet").innerHTML = ''; } function getImage() { obj = document.getElementById('paste-image'); postTo = "http://localhost/PasteImageApplet/PasteImageApplet/Web/shoot.php"; // Change this to your URL image = obj.getClipboardImageURL(postTo); if (image) { url = "shots/" + image; document.getElementById("target").src = url; document.getElementById("url").value = document.getElementById("target").src; // to get full path, hack, I know ;) document.getElementById("container").style.display = ""; } }   

Copy some image data to your clipboard, accept the applet (it only accesses the clipboard) and click the button :-) See a blog post about this demo


我也没有收到任何错误。 请指教。

这是因为applet存在自己的沙箱,在那里它们需要特殊权限才能执行某些操作,例如读取或写入客户机的磁盘。 请记住,applet在客户端计算机的上下文中执行,它们是guest虚拟机,需要遵循house规则

查看哪些Applet可以执行和不可执行以获取更多详细信息

applet无法在服务器上建立File 。 这不是服务器的工作方式。 如果服务器接受上载,则必须提供特定function才能启用该上载,并且applet必须使用该function。

只要接受上载的function在同一台服务器上,applet就可以保持沙盒状态。

你可以通过(windows)任务栏看到applet的控制台,你右键单击java图标(当applet运行时它应该出现在右下方)并右键单击>打开控制台,你可以调试那里,这是堆栈的位置小程序的痕迹。