javascript - 加载应用程序中通过 Web 服务器公开的 Assets 文件夹中托管的图像文件

标签 javascript java android webserver

在我的应用程序中,我创建了托管网络应用程序的网络服务器。 Web应用程序的所有文件都放在assets文件夹中。

现在,我通过运行我的应用程序来启动 Web 服务器,然后从 crome 浏览器中,我尝试通过调用 index.html 文件来运行我的 Web 应用程序。页面的 html、css 部分已正确加载,但图像未加载到页面中:

这是我的 HttpRequestHandlerCode:

public class HomePageHandler implements HttpRequestHandler {
    private Context context = null;

    private static final Map<String, String> mimeTypes = new HashMap<String, String>() {

        {
            put("css", "text/css");
            put("htm", "text/html");
            put("html", "text/html");
            put("xhtml", "text/xhtml");
            put("xml", "text/xml");
            put("java", "text/x-java-source, text/java");
            put("md", "text/plain");
            put("txt", "text/plain");
            put("asc", "text/plain");
            put("gif", "image/gif");
            put("jpg", "image/jpeg");
            put("jpeg", "image/jpeg");
            put("png", "image/png");
            put("svg", "image/svg+xml");
            put("mp3", "audio/mpeg");
            put("m3u", "audio/mpeg-url");
            put("mp4", "video/mp4");
            put("ogv", "video/ogg");
            put("flv", "video/x-flv");
            put("mov", "video/quicktime");
            put("swf", "application/x-shockwave-flash");
            put("js", "application/javascript");
            put("pdf", "application/pdf");
            put("doc", "application/msword");
            put("ogg", "application/x-ogg");
            put("zip", "application/octet-stream");
            put("exe", "application/octet-stream");
            put("class", "application/octet-stream");
            put("m3u8", "application/vnd.apple.mpegurl");
            put("ts", " video/mp2t");
        }
    };

    public HomePageHandler(Context context){
        this.context = context;
    }

    @Override
    public void handle(HttpRequest request, HttpResponse response, HttpContext httpContext) throws HttpException, IOException {
        //String contentType = "text/html";
        //Log.i("Sushill", "..request : " + request.getRequestLine().getUri().toString());
        final String requestUri = request.getRequestLine().getUri().toString();
        final String contentType = contentType(requestUri);
                        String resp = Utility.openHTMLStringFromAssets(context, "html" + requestUri);
                        writer.write(resp);
                        writer.flush();
//                    }
                }
            });
            ((EntityTemplate) entity).setContentType(contentType);
            response.setEntity(entity);
        }
    }

    /**
     * Get content type
     *
     * @param fileName
     *            The file
     * @return Content type
     */
    private String contentType(String fileName) {

        String ext = "";
        int idx = fileName.lastIndexOf(".");
        if (idx >= 0) {
            ext = fileName.substring(idx + 1);
        }
        if (mimeTypes.containsKey(ext)) {
            //Log.i("Sushill", "...ext : " + ext);
            return mimeTypes.get(ext);
        }
        else
            return "application/octet-stream";
    }

为了处理图像,我尝试了这个,但它不起作用:

if(contentType.contains("image")) {
                    InputStream is = Utility.openImageFromAssets(context, "html" + requestUri);
                    char[] buffer = new char[1024];
                    try {
                        Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                        int n;
                        while ((n = reader.read(buffer)) != -1) {
                            writer.write(buffer, 0, n);
                        }
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    } finally {
                        try {
                            is.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }

有人可以帮我弄清楚如何在我的浏览器中加载图像吗?

感谢您的帮助

最佳答案

取消 BufferedReader(new InputStreamReader' 所以你也取消了 UTF-8。仅使用 InputStream 'is'。取消 writer。你没有显示 'writer' 是什么,但取消了它。使用http连接的OutputStream。保留缓冲区以及在缓冲区中读取和从缓冲区写入的循环。

关于javascript - 加载应用程序中通过 Web 服务器公开的 Assets 文件夹中托管的图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32848688/

相关文章:

javascript - 页面在 IE9 中无法正确加载

java - 复杂 Java 模型的 JUnit 测试

java - 为什么只有 1 个对象适合 GC?

android - 在 MenuItem 上显示进度条,即使它处于拆分操作栏模式

android - 为什么我的 Android lib 目录符号链接(symbolic link)不正确?

android - 我的 Android 电子叫车应用的移动支付集成

javascript - ruby rails : Passing string array to highchart function

javascript - ShieldUI 网格 : how to get the row where the doubleclick is fired

java - 如何使用加速度计检测1Gs以上的振动?

javascript - 单击时上下滑动 Div