论坛首页 入门技术论坛

简单的JAVA HTTP server 如何解析附件

浏览 6590 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-03  
想做一个简单的图片上传服务器,发现JDK6中有个HttpServer 可以支持简单的Server比用Socket简单多了,目前只是想获取Request中的附件.但是获取了全部的Request保存在文本中.但是如何解析请求中的附件确无从下手

/**
 *
 * @author rikugun
 */
public class Main {

    public static void main(String[] args) {
        try {
            HttpServer hs = HttpServer.create(new InetSocketAddress(8888), 0);//设置HttpServer的端口为8888
            hs.createContext("/pic", new PicHandler());//用PicHandler类内处理到/pic的请求
            hs.setExecutor(null); // creates a default executor
            hs.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


PicHandler.java
/**
 *
 * @author rikugun
 */
public class PicHandler implements HttpHandler {

    public void handle(HttpExchange t) throws IOException {
        
        String response = "";
        String mt = t.getRequestMethod();
        if (t.getRequestMethod().equals("GET")) {
            response = "<h3>请使用POST提交图片!</h3>";
        } else {
            InputStream is = t.getRequestBody();
            doUpload(is);
            response = "<h3>上传成功!</h3>";
        }
        t.sendResponseHeaders(200, response.length());
        OutputStream os = t.getResponseBody();
        os.write(response.getBytes());
        os.close();
    }

    private void doUpload(InputStream is) {
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(new File("out.txt"));
        } catch (FileNotFoundException ex) {
            Logger.getLogger(PicHandler.class.getName()).log(Level.SEVERE, null, ex);
        }
        byte b[] = new byte[8192];
        int isEnd = 0;
        while (true) {
            try {
                isEnd = is.read(b);
                if (isEnd == -1) {
                    //文件末尾
                    break;
                }
                System.out.println(b.toString());
                fos.write(b);
            } catch (IOException ex) {
                ex.printStackTrace();
                break;
            }
        }
 try {
            fos.close();
            is.close();
        } catch (IOException ex) {
            Logger.getLogger(PicHandler.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics