六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 60|回复: 0

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

[复制链接]

升级  59.33%

116

主题

116

主题

116

主题

举人

Rank: 3Rank: 3

积分
378
 楼主| 发表于 2013-1-15 03:00:33 | 显示全部楼层 |阅读模式
想做一个简单的图片上传服务器,发现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);        }    }}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表