Android отправляет изображение на сервер

1
HttpClient httpclient1 = new DefaultHttpClient();

HttpParams p=new BasicHttpParams();

p.setParameter("vname",name);
p.setParameter("address", addr);
p.setParameter("age", age);
p.setParameter("contact", cnct);
p.setParameter("gender", gen);
p.setParameter("whomto", wtm);
p.setParameter("myFile", f);

HttpPost res1=new HttpPost(result);
res1.setHeader("Content-Type", "text/plain");
res1.setHeader("Content-Type","image/jpeg");

HttpResponse response1 = httpclient1.execute(res1);
HttpEntity entity1 = response1.getEntity();
i1 = entity1.getContent();
BufferedReader reader1 = new BufferedReader(new InputStreamReader(i1,"iso-8859-1"),8);
StringBuilder sb1 = new StringBuilder();
String line1 = null;

if((line1 = reader1.readLine()) != null) {

    sb1.append(line1);
    back=sb1.toString();
}
else{
    Log.e("GET data","null");
}
i1.close();
Log.e("GET",""+back);  

//Код сервера private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();

public void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {

    res.setContentType("text/html");

    Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req);
    BlobKey blobKey = blobs.get("myFile");
    final BlobInfo blobInfo = new BlobInfoFactory().loadBlobInfo(new BlobKey(blobKey.getKeyString()));
    System.out.println(blobInfo.getContentType());
    if(!blobInfo.getContentType().equalsIgnoreCase("image/jpeg")){
        blobstoreService.delete(blobInfo.getBlobKey());
        res.getWriter().println("Please Provide JPG image only");

    }       

Я отправляю один файл изображения с некоторыми другими данными на сервер. Я не получаю никаких ошибок или исключений. Но когда я печатаю "назад", в журнале отображается "Тип содержимого запроса не принимается по этому URL". "f" - это мой файл с изображениями. В чем проблема?

  • 0
    Это может быть проблемой в коде сервера, который указывает, какие типы контента он принимает для этого URL. Можете ли вы поделиться этой частью серверного кода?
  • 0
    public void doPost (HttpServletRequest req, HttpServletResponse res) выдает ServletException, IOException {res.setContentType ("text / html"); Map <String, BlobKey> blobs = blobstoreService.getUploadedBlobs (req); BlobKey blobKey = blobs.get ("myFile"); final BlobInfo blobInfo = new BlobInfoFactory (). loadBlobInfo (new BlobKey (blobKey.getKeyString ())); System.out.println (blobInfo.getContentType ()); if (! blobInfo.getContentType (). equalsIgnoreCase ("image / jpeg")) {blobstoreService.delete (blobInfo.getBlobKey ()); res.getWriter (). println («Пожалуйста, предоставьте только изображение в формате JPG»); }
Показать ещё 2 комментария
Теги:
servlets

2 ответа

0

Вы устанавливаете заголовок Content-Type на два разных значения, ни один из которых не является "multipart/form-data", который, по моему мнению, является тем, что вам нужно при отправке файла.

Вот ответ, который должен помочь: qaru.site/questions/72981/...

0

Посмотрите на мой ответ на аналогичный вопрос, как ваш: link Это избавит вас от хлопот написания кода на стороне сервера и позволит вам отправлять данные на Android-приложение, например. изображения к нему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню