Для подобной функции (загрузка фотографий с Android на сервлет), вот Android код клиента я использую (немного отредактирована для размещения здесь):
URI uri = URI.create(// path to file);
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.STRICT);
// several key-value pairs to describe the data, one should be filename
entity.addPart("key", new StringBody("value"));
File inputFile = new File(photoUri.getPath());
// optionally reduces the size of the photo (you can replace with FileInputStream)
InputStream photoInput = getSizedPhotoInputStream(photoUri);
entity.addPart("CONTENT", new InputStreamBody(photoInput, inputFile.getName()));
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(uri);
HttpContext localContext = new BasicHttpContext();
httppost.setEntity(entity);
HttpResponse response = httpclient.execute(httppost, localContext);
и вот код, чтобы получить его. Во-первыхи, убедитесь, что помечать класс сервлета в качестве поддержки многокомпонентных сообщений:
@MultipartConfig
public class PhotosServlet extends HttpServlet
, а затем соответствующая часть тела:
HttpEntity entity = new InputStreamEntity(request.getPart("CONTENT").getInputStream(), contentLength);
InputStream inputFile = entity.getContent();
// string extension comes from one of the key-value pairs
String extension = request.getParameter(//filename key);
// first write file to a file
File images = new File(getServletContext().getRealPath("images"));
File filePath = File.createTempFile("user", extension, images);
writeInputDataToOutputFile(inputFile, filePath); // just copy input stream to output stream
String path = filePath.getPath();
logger.debug("Wrote new file, filename: " + path);
Надеется, что это помогает.
Я предполагаю, что изображение предпочтительно отправляется как строка Base64. Я слышал что-то о почтовых запросах, возможно, это будет полезно? – Mat
В общем, то, что вы ищете, это «обработчик загрузки файлов». Попробуйте выполнить поиск, есть много простых вариантов для этого, если вам не нужно использовать Spring. –