Android到servlet图像上传保存在服务器上

Posted

技术标签:

【中文标题】Android到servlet图像上传保存在服务器上【英文标题】:Android to servlet image upload to be saved on server 【发布时间】:2011-07-09 11:35:00 【问题描述】:

我创建了一个 servlet,它接受来自我的 android 应用程序的图像。我在我的 servlet 上接收字节,但是,我希望能够使用服务器上的原始名称保存这个图像。我怎么做。我不想使用 apache commons。还有其他适合我的解决方案吗?

谢谢

【问题讨论】:

【参考方案1】:

借助 Android 内置 HttpClient API 的 MultipartEntity 类将其作为 multipart/form-data 请求发送。

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://example.com/uploadservlet");
MultipartEntity entity = new MultipartEntity();
entity.addPart("fieldname", new InputStreamBody(fileContent, fileContentType, fileName));
httpPost.setEntity(entity);
HttpResponse servletResponse = httpClient.execute(httpPost);

然后在servlet的doPost()方法中,使用Apache Commons FileUpload提取部分。

try 
    List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
    for (FileItem item : items) 
        if (item.getFieldName().equals("fieldname")) 
            String fileName = FilenameUtils.getName(item.getName());
            String fileContentType = item.getContentType();
            InputStream fileContent = item.getInputStream();
            // ... (do your job here)
        
    
 catch (FileUploadException e) 
    throw new ServletException("Cannot parse multipart request.", e);


我不想使用 apache commons

除非您使用支持 multipart/form-data 的 Servlet 3.0 以 HttpServletRequest#getParts() 开箱即用请求,否则您需要自己根据 RFC2388 重新发明一个 multipart/form-data 解析器。它只会长期咬你。难的。我真的看不出你为什么不使用它的任何理由。是单纯的无知吗?至少没那么难。只需将commons-fileupload.jarcommons-io.jar 放入/WEB-INF/lib 文件夹并使用上面的示例。而已。你可以找到here另一个例子。

【讨论】:

以上是关于Android到servlet图像上传保存在服务器上的主要内容,如果未能解决你的问题,请参考以下文章

如何以多部分形式将画布图像上传到 java servlet?

如何从android改造上传图像到服务器

使用 servlet 上传后图像文件已损坏 [重复]

如何使用jsp和servlet将多个图像上传到文件夹[重复]

无法将图像文件从 Android 应用程序发布到托管在 Tomcat 上的 Java servlet

Android:通过 HttpURLConnection 上传的位图不可用