Java 从POST请求中检索图像

Java 从POST请求中检索图像,java,servlets,Java,Servlets,我正试图向我的Javaservlet(托管在AmazonEC2上)发送一张图片,以便稍后将其传输到AmazonS3,并想知道如何从post请求中检索图像 上传代码 请求通过iOS RestKit API发送,如下所示(pic.imageData是NSData类型): 解析代码存根 以下是我在Java servlet上解析其他2个参数的方式: double dateTaken = Double.parseDouble(req.getParameter("dateTaken")); double d

我正试图向我的Javaservlet(托管在AmazonEC2上)发送一张图片,以便稍后将其传输到AmazonS3,并想知道如何从post请求中检索图像

上传代码 请求通过iOS RestKit API发送,如下所示(pic.imageData是NSData类型):

解析代码存根 以下是我在Java servlet上解析其他2个参数的方式:

double dateTaken = Double.parseDouble(req.getParameter("dateTaken"));
double dateUploaded = Double.parseDouble(req.getParameter("dateUploaded"));
问题:
问题是:如何在我的服务器上检索和解析图像?

类似于此,使用:


请参阅API参考文档以确定下一步的操作。

Servlet 3.0支持读取多部分数据。
Servlet 3.0
中的MutlipartConfig支持如果使用
@MutlipartConfig
注释对servelt进行注释,则容器负责通过

HttpServletRequest.getParts()
HttpServletRequest.getPart("name");
参考文献:


感谢您的回复,apache commons fileupload说指定了以下内容:如果使用POST方法提交HTTP请求,并且内容类型为“多部分/表单数据”,则fileupload可以解析该请求,并以调用方易于使用的方式提供结果。我的请求与此相符吗?@LuisOscar:试试看,你会找到答案。@LuisOscar:你的请求确实是一篇
文章。从我从的收集到的信息来看,这应该是一条由多个部分组成的消息。谢谢,我正在尝试将commons fileupload安装到java,以便进行测试。好的,我会马上给你回复。好的,我成功导入了commons,但我收到以下警告:List是原始类型。对泛型类型列表的引用应参数化。迭代器是一种原始类型。对泛型类型迭代器的引用应该参数化。我的建议可能有点离题,但您也可以选择base64编码图像。虽然效率不高,但他们为我服务得很好。您正在使用哪个servlet容器?@AnupamSaini我对服务器编程非常陌生,因此简单地使用restkit似乎是最简单的解决方案。@RameshPVK apache tomcat ibelieve@RameshPVK我的ec2上的实例图像显示:AMI:ElasticBeanstalk-Tomcat6-64bit-201202071737(AMI-d5ec3cbc)似乎我不能使用这种方法,因为我运行的是tomcat 6,根据这个网站:我只有2.x Serlvets,那么你应该使用commons apache文件upload@Lion:这也是一种仅适用于最新容器的方法:)不是每个人都那么幸运,而lib方法相对简单,前后兼容。如果您有一个支持Servlet 3+的容器,那么我肯定会选择它。
 // or @SuppressWarnings("unchecked")
 @SuppressWarnings("rawtypes")
 public void doPost(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException {
     if (ServletFileUpload.isMultipartContent(request)) {
         final FileItemFactory   factory = new DiskFileItemFactory();
         final ServletFileUpload upload  = new ServletFileUpload(factory);

         try {
             final List items = upload.parseRequest(request);

             for (Iterator itr = items.iterator(); itr.hasNext();) {
                 final FileItem item = (FileItem) itr.next();

                 if (!item.isFormField()) {
                    /*
                     * TODO: (for you)
                     *  1. Verify that file item is an image type.
                     *  2. And do whatever you want with it.
                     */
                 }
             }
         } catch (FileUploadException e) {
             e.printStackTrace();
         }
     }
 }
HttpServletRequest.getParts()
HttpServletRequest.getPart("name");