rikugun 发表于 2013-1-28 19:35:40

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

想做一个简单的图片上传服务器,发现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;      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);      }    }}
页: [1]
查看完整版本: 简单的JAVA HTTP server 如何解析附件