【问题标题】:Android Sending Image to serverAndroid将图像发送到服务器
【发布时间】:2012-08-09 06:09:06
【问题描述】:
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);  

//服务器代码 私有 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”是我的图片文件..有什么问题?

【问题讨论】:

  • 这可能是服务器代码中的一个问题,它指定了该 URL 接受的内容类型。你能分享那部分服务器代码吗?
  • public void doPost(HttpServletRequest req, HttpServletResponse res)throw ServletException, IOException { res.setContentType("text/html"); Map blobs = blobstoreService.getUploadedBlobs(req); BlobKey blobKey = blobs.get("myFile");最终 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图片"); }
  • 在前面的代码中,我通过 f 发送图像文件。

标签: android servlets


【解决方案1】:

看看我对与您类似的问题的回答:link 它将为您省去编写服务器端代码并​​让您的 android 应用程序发送数据的麻烦,例如。图像。

【讨论】:

    【解决方案2】:

    您正在将 Content-Type 标头设置为两个不同的值,这两个值都不是“multipart/form-data”,我认为这是您在发送文件时需要的。

    这是一个应该有帮助的答案: https://stackoverflow.com/a/3003402/412558

    【讨论】:

      猜你喜欢
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 2015-10-20
      相关资源
      最近更新 更多