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.jar
和commons-io.jar
放入/WEB-INF/lib
文件夹并使用上面的示例。而已。你可以找到here另一个例子。
【讨论】:
以上是关于Android到servlet图像上传保存在服务器上的主要内容,如果未能解决你的问题,请参考以下文章
如何以多部分形式将画布图像上传到 java servlet?
如何使用jsp和servlet将多个图像上传到文件夹[重复]