我已经创建了一个servlet来接受来自我的android应用程序的图像.我正在servlet上接收字节,但是,我希望能够以原始名称将该图像保存在服务器上.我怎么做.我不想使用Apache Commons.还有其他适合我的解决方案吗?
谢谢
解决方法:
借助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);
}
I dont want to use apache commons
除非您使用的Servlet 3.0支持开箱即用的0033请求多部分/表单数据,否则您将需要根据RFC2388重新创建多部分/表单数据解析器.这只会长期困扰您.硬.我真的看不到您不使用它的任何原因.是无知吗?至少没有那么难.只需将commons-fileupload.jar和commons-io.jar放在/ WEB-INF / lib文件夹中,并使用上面的示例.而已.您可以找到另一个示例here.