2012-04-05 10 views
0

私は初心者ですので、あまりにも私には難しくありません。このコンセプトはかなりシンプルです。私は、ユーザーが自分のサイトの特定のセクションを見て、スクリーンショットが自分のマシンにスナップされ、自分のサイトにアップロードされるようにしたいと考えています。画面とアップロードJavaクラスはローカルではなくオンラインでは動作しません。まったくエラーはありません。どうしましたか?

クラスのオンラインで表示されるエラーはありませんが、クラスをホストするときにスクリーンショットが表示されないため、アップロードの部分に問題があると推測しています。ローカルでは、C:/に誰かのように設定されているパスがうまく動作するように助けてくれました。どのようにWeb上で動作させるのですか?

import java.applet.*; 
import java.awt.AWTException; 
import java.awt.Rectangle; 
import java.awt.Robot; 
import java.awt.Toolkit; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import java.net.*; 
import java.io.*; 
import javax.imageio.ImageIO; 

public class ScreenShot extends Applet { 

static boolean captureScreenShot(String uploadPath) 
{ 
boolean isSuccesful = false; 
Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); 
BufferedImage capture; 
try { 
URL whatismyip = new URL("http://mysite.com/misc.php?page=showremoteaddr"); 
BufferedReader in = new BufferedReader(new InputStreamReader(
      whatismyip.openStream())); 

String ip = in.readLine(); //you get the IP as a String 
capture = new Robot().createScreenCapture(screenRect); 
// screen shot image will be save at given path with name "screen.jpeg" 
ImageIO.write(capture, "png", new File(uploadPath, ip + ".png")); 
isSuccesful = true; 
} catch (AWTException awte) { 
awte.printStackTrace(); 
isSuccesful = false; 
} 
catch (IOException ioe) { 
ioe.printStackTrace(); 
isSuccesful = false; 
} 
return isSuccesful; 
} 

public static void main(String [] args){ 
    String path = "/var/chroot/home/content/srvu/srvr/www"; 
    captureScreenShot(path); 
} 
} 
+0

私はあなたに+ rep^_ ^をどうやってくれますか? – user1296537

+0

* "クラスに目に見えるエラーはありません" * Javaコンソールをチェックしていますか?私はそれがより有益であると確信している(Ernestはすでに問題を特定しているようだが)。 –

答えて

2

インターネットからダウンロードしたJavaアプレットには、スクリーンショットの取得やファイルシステムへのアクセスが許可されていません。彼らがした場合、巨大なセキュリティ問題を想像してみてください!これらの許可を得るための鍵は、あなたのアプレットにデジタル署名することです。これは合理的に関係するプロセスであり、お金もかかります。 Hereはトピックに関する簡単なチュートリアルです。

また、アプレットにはmain()ルーチンがありません。正しくは、アプレットを作成してmain()メソッドを渡すと、ブラウザは呼び出しません。あなたのアプレットのコードは実行されません!アプレットには独自のエントリポイントがあります。それらの作成の基礎を学ぶことができますhere.

関連する問題