com.sun.net.httpserver を使用して html ページを提供しています。テキスト コンテンツは正しく表示されますが、画像を提供することはできません。私のコードは次のようになります。
static String Test(int Font_Size,String First_Name,String Last_Name)
{
String Pic_File="C:/Dir_Resume_App/Dir_Resume_Picture/Hi_Test.jpg";
String Resume="<Table><Tr><Td><H2>First_Name Last_Name</H2></Td></Tr><Tr><Td><Img Src=\"file://"+Pic_File+"\" alt=Hi_Test width=268 height=201><br>"+(Pic_File+" : exists = "+new File(Pic_File).exists())+"</Td></Tr></Table>\n";
...
return Resume;
}
そして、ここに結果があります:
結果からわかるように、画像ファイルは存在しますが、なぜか「file://C:/Dir_Resume_App/Dir_Resume_Picture/Hi_Test.jpg」というパスでは画像を表示できません。
「Dir_Resume_Picture/Hi_Test.jpg」、「/Dir_Resume_Picture/Hi_Test.jpg」、「../Dir_Resume_Picture/Hi_Test.jpg」、「../../Dir_Resume_Picture/Hi_Test.jpg」などの相対パスも試しました。 "および "Dir_Resume_App/Dir_Resume_Picture/Hi_Test.jpg" のいずれも機能しません。誰かが com.sun.net.httpserver で画像を正常に提供しましたか?
プレーンテキストだけでなく画像を提供する方法を伝えるなど、httpヘッダーで何かを見落とした可能性があると思いますが、それが理由でしょうか? 現在、次のようになっています。
InetSocketAddress addr=new InetSocketAddress(Port);
HttpServer server=HttpServer.create(addr,0);
server.createContext("/"+App_Id,new MyHandler(server));
...
class MyHandler implements HttpHandler
{
HttpServer server;
public MyHandler(HttpServer server) { this.server=server; }
public void handle(HttpExchange exchange)
{
OutputStream responseBody=exchange.getResponseBody();
String requestMethod=exchange.getRequestMethod(),requestPath=exchange.getRequestURI().getPath(),line,title="Match Skillsets",
responseString="<Html>\n<Head>\n <Title>"+title+"</Title>\n </Head>\n<Body>\n<Center>\n";
BufferedReader in=new BufferedReader(new InputStreamReader(exchange.getRequestBody()));
LinkedHashMap<String,String> params=queryToMap(exchange.getRequestURI().getQuery());
try
{
if (requestMethod.equalsIgnoreCase("GET"))
{
Headers responseHeaders=exchange.getResponseHeaders();
// responseHeaders.set("Content-Type","text/plain");
responseHeaders.set("Content-Type","text/html;charset=utf-8");
exchange.sendResponseHeaders(200,0);