如何让服务器下载从客户端的HTTP PUT请求中上传的图像文件?

时间:2012-01-12 18:08:24

标签: java http

我需要用Java实现一个Web服务器。 Web服务器应下载客户端在HTTP PUT请求中上载的图像文件。这样做的程序是什么?我应该使用哪些Java类?

另外,如果你能推荐一本涵盖这些主题的好书,那就太棒了。但具体问题现在更重要。

1 个答案:

答案 0 :(得分:2)

您应该阅读有关Java servlet和servlet容器的信息。首先实现一个返回“Hello world”字符串的简单servlet

这是有史以来最短的上传/下载servlet:

import org.apache.commons.io.IOUtils;

@WebServlet(urlPatterns = {"/test"})
public class DownloadServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        File f = new File("test.txt");
        resp.setContentLength((int) f.length());
        final FileInputStream input = new FileInputStream(f);
        IOUtils.copy(input, resp.getOutputStream());
        input.close();
    }

    @Override
    protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        final FileOutputStream output = new FileOutputStream("test.txt");
        IOUtils.copy(req.getInputStream(), output);
        output.close();
    }
}

首先点击:

$ curl -X PUT -d "Hello, servlet" localhost:8080/test

将给定文本存储在磁盘上某个名为test.txt的文件中。然后只需在浏览器中输入localhost:8080/test即可。我认为这是一个好的开始。