Envoyez-le en tant que multipart/form-data avec l'aide de MultipartEntity
de la classe intégrée d'Android API HttpClient .
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);
Et ensuite dans la servlet doPost()
utiliser la méthode Apache Commons FileUpload pour extraire la pièce.
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);
}
Je ne veux pas utiliser apache commons
À moins que vous n'utilisiez Servlet 3.0 qui supporte multipart/form-data
demande hors de la boîte avec [HttpServletRequest#getParts()
](http://download.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getParts()) vous devrez réinventer vous-même un analyseur de données multipart/form-data basé sur RFC2388 . Cela va seulement vous mordre sur le long terme. Dur. Je ne vois vraiment pas pourquoi vous ne l'utiliseriez pas. Est-ce de l'ignorance pure et simple ? C'est au moins pas si difficile. Laisse tomber commons-fileupload.jar
et commons-io.jar
sur /WEB-INF/lib
et utiliser l'exemple ci-dessus. C'est tout. Vous pouvez trouver ici un autre exemple.