Android 我应该在printWriter中为img标记设置什么路径,以便客户端读取?(通过插座连接)

Android 我应该在printWriter中为img标记设置什么路径,以便客户端读取?(通过插座连接),android,Android,我正在尝试制作一个可以在本地网络上服务的网页,服务器本身就是安卓设备。(需要将此android数据发送到matlab)。到目前为止,我成功地用下面的方法制作了平面文本网页。但是现在,我需要添加一个图像到这个网页。当我使用下面这样的img标签时,它找不到图像(它确实存在于存储器中,路径也正确) 相同的完整代码是。我用这个指南来制作我的服务器 我应该怎么做才能将图像放在相同的上下文路径上,以便客户端读取它 private class HttpResponseThread extends Thread

我正在尝试制作一个可以在本地网络上服务的网页,服务器本身就是安卓设备。(需要将此android数据发送到matlab)。到目前为止,我成功地用下面的方法制作了平面文本网页。但是现在,我需要添加一个图像到这个网页。当我使用下面这样的img标签时,它找不到图像(它确实存在于存储器中,路径也正确)

相同的完整代码是。我用这个指南来制作我的服务器

我应该怎么做才能将图像放在相同的上下文路径上,以便客户端读取它

private class HttpResponseThread extends Thread {

    Socket socket;

    HttpResponseThread(Socket socket){
        this.socket = socket;
    }

    @Override
    public void run() {
        BufferedReader is = null;
        final PrintWriter os;
        String request;

        try {
            is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            request = is.readLine();
            os = new PrintWriter(socket.getOutputStream(), true);

            String response =
                    "<html><head></head>" +
                                    "<body>" +
                                    "<img src='" + Environment.getExternalStorageDirectory().getAbsolutePath() + "/selfDrive/temp.jpg' alt='image' />" +
                                    "</body></html>";

                    os.print("HTTP/1.0 200" + "\r\n");
                    os.print("Content type: text/html" + "\r\n");
                    os.print("Content length: " + response.length() + "\r\n");
                    os.print("\r\n");
                    os.print(response + "\r\n");
                    os.flush();

                    socket.close();


        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
私有类HttpResponseThread扩展线程{
插座;
HttpResponseThread(套接字){
this.socket=socket;
}
@凌驾
公开募捐{
BufferedReader为空;
最终印刷作者操作系统;
字符串请求;
试一试{
is=新的BufferedReader(新的InputStreamReader(socket.getInputStream());
请求=is.readLine();
os=新的PrintWriter(socket.getOutputStream(),true);
字符串响应=
"" +
"" +
"" +
"";
打印(“HTTP/1.0 200”+“\r\n”);
打印(“内容类型:text/html”+“\r\n”);
打印(“内容长度:“+response.length()+”\r\n”);
os.print(“\r\n”);
打印操作系统(响应+“\r\n”);
os.flush();
socket.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}

请记住,Web浏览器将解析网页的HTML,并对所需的每个资源发出单独的请求。对于
属性。源属性中的URL可以是任何有效的URL。通常,它是基于原始HTML页面URL的相对路径。在这种情况下,web浏览器负责通过连接HTML的URL和图像的相对路径来创建实际URL

当服务器收到请求时,它负责解析URL并发送响应。在这种情况下,您可以指定设备上与“”对应的文件夹,例如外部存储文件夹。现在,您只需加载与所选文件夹相关的所有资源。例如,如果传入的URL为“”,则服务器解析出文件名“pic.png”,并从所选的基本文件夹加载它


如前所述,HTML可以包含一个相对页面,如
,浏览器会将其与HTML页面的URL连接起来,以创建图像资源的完整URL。

它找不到图像
。你指的是浏览器?还是你的服务器?如果您的浏览器可以尝试将
“更改为

一个好的替代方法是在后台创建一个ftp服务器,并从那里访问图像,如

通过这种方式访问存储中的文件也会很有效。

在客户端,使用什么URL请求网页?Android的本地IP地址:我可以看到整个网页,但没有图像。
它找不到图像。
。你指的是浏览器?还是你的服务器?如果您的浏览器可以尝试将
“更改为
”。它在@greenapps:)中起作用。您使用什么浏览器访问该网页?我的问题是,如何指向外部存储,它将引用此图像?与中一样,我想将Environment.getExternalStorageDirectory().getAbsolutePath()+“/images”指向“@Rohit客户端使用什么?您使用的是标准浏览器还是您构建的应用程序?客户端也在Android设备上吗?我使用的是标准浏览器。顺便说一句:)谢谢。@Rohit这是android设备上的标准浏览器吗?如果您使用其他设备(如台式计算机)访问手机上的网页,则接受的解决方案将不适用。我在后台创建了一个ftp服务器,可以从那里访问图像。这样工作起来更容易。