2017-08-03 26 views
0

Java Webサーバーを作成しましたが、HTML imgタグを使用して画像を送信しようとしています。私はimgタグにsrcタグで画像ファイルへのパスに入れている Java Webサーバー経由でHTMLにimgタグを送信する

try { 
    socket = server.accept(); 
    System.out.println(socket.getRemoteSocketAddress() + " has connected"); 

    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 
    out.write("HTTP/1.1 200 OK\r\n"); 
    out.write("Content-type: text/html\r\n"); 
    out.write("\r\n"); 
    //problem starts 
    out.write("<img src=\"file:///Users/Reno/Desktop/MyServer/html/images/GG9/fbicon.jpg\" alt=\"Facebook Icon\">"); 

    out.close(); 
    socket.close(); 


} catch(Exception e) { 
    System.out.println(e); 
    e.printStackTrace(); 
} 

:これは、コードの一部です。接続は正常に動作しますが、イメージは表示されず、代替テキストが表示されます。代替テキストを追加する前に、サーバーに接続すると、クライアントのブラウザに空白のページしか表示されません。

また、srcパスを"html/images/GG9/fbicon.jpg"に変更してみましたが、代わりに青いボックスの疑問符が表示されます。私は"fakepath"のような存在しないsrcパスに再度変更し、疑問符も表示されます。つまり、サーバーまたはクライアントは、"file:///"で始まる現在のsrcパスで何かを読み取っていなければなりません。

これを修正して正しいコードを表示するにはどうすればよいですか。

+0

お使いのブラウザでは、HTTPとファイルプロトコルを使用してページ上に配信されるページが混在している可能性があります。もしそうであれば、深刻なセキュリティ上の問題になるでしょう。 –

+0

あなたの前の投稿に書いたコメントはまだ適用されていると思います –

答えて

0

<Image/>要素を作成するときに流星を使って同様の問題が発生しました。ここでは、2つのpossibeソリューションは、以下のとおりです。

  • インポートしたい画像ファイルは、プロジェクト内で使用可能な公開ファイルであることを確認してください。つまり、作成したフォルダ内に画像を作成する権限があることを確認します。そうしないと、読み込み時にエラーメッセージが表示されることがあります。

  • 次のような相対パスを使用して優先順位を付けます。 project/mypictures/Image.jpgのような絶対パスではなく./mypictures/Image.jpgです。セキュリティ上の理由から参照パスが絶対的である場合、Google Chromeのような特定のブラウザはクライアント側で画像のアップロードをブロックします。ここでも、あなたはいつもあなたは、これが助けたacess not allowed

希望のラインに沿ってお使いのブラウザの何かに表示されるはずですが、このために生成されたエラーメッセージを持っていないかもしれません! D.

+0

私はSafariを使用しています。また、プログラムは 'MyServer/test/test.java'の中に' MyServer/html/images/GG9/fbicon.jpg'というファイルがあります。 –

+0

この場合、作業ディレクトリはテストフォルダかMyServerフォルダですか? –

+0

この場合、作業ディレクトリはMyServerです。したがって、あなたが確かに公開したいファイルはhtmlファイルです。しかし、問題が他のどこから来ていないかを確認するための簡単なテストを既に試すことができます。 srcファイルパスをイメージのurlタグで置き換えてみてください(インターネットのイメージを取得し、srcのpropにURLを貼り付けてコピーしてください)。イメージは正常に読み込まれるはずです。したがって、問題はファイルパス(拡張子が.jpgなどであることを確認してください)またはファイルのアクセス可能性から来るはずです – Diveye

関連する問題