2011-02-18 71 views
0

我一直在寻找这最后一两天,似乎无法找到解决我的问题。我正在尝试使用httppost将映像发布到服务器。 我试图这样做的两种方式,并完成双方的职位,但没有内容,即内容长度为0 首先是如下:Android - 图片上传不发送内容

String url = "MYURL"; 
     HttpClient httpClient = new DefaultHttpClient(); 

    try { 
      httpClient.getParams().setParameter("http.socket.timeout", new Integer(90000)); // 90 second 
      HttpPost post = new HttpPost(url); 
      File SDCardRoot = Environment.getExternalStorageDirectory(); 
      File file = new File(SDCardRoot,"/DCIM/100MSDCF/DSC00004.jpg"); 
      FileEntity entity; 
      entity = new FileEntity(file,"binary/octet-stream"); 
      entity.setChunked(true); 
      post.setEntity(entity); 
      post.addHeader("Header", "UniqueName"); 
      HttpResponse response = httpClient.execute(post); 
      if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { 
        Log.e("Here","--------Error--------Response Status line code:"+response.getStatusLine()); 
      }else { 
        // Here every thing is fine. 
      } 

      HttpEntity resEntity = response.getEntity(); 
      if (resEntity == null) { 
       Log.e("Here","---------Error No Response!!-----"); 
      } 
    } catch (Exception ex) { 
      Log.e("Here","---------Error-----"+ex.getMessage()); 
      ex.printStackTrace(); 
    } finally { 
       httpClient.getConnectionManager().shutdown(); 
    } 

,第二个是:

String url = "MYURL"; 
     //File SDCardRoot = Environment.getExternalStorageDirectory(); 
     File file = new File(Environment.getExternalStorageDirectory(),"/DCIM/100MSDCF/DSC00004.jpg"); 
     try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost(url); 
      InputStreamEntity reqEntity = new InputStreamEntity(new FileInputStream(file), -1); 
      reqEntity.setContentType("binary/octet-stream"); 
      reqEntity.setChunked(true); 
      // Send in multiple parts if needed 
      httppost.setEntity(reqEntity); 
      HttpResponse response = httpclient.execute(httppost); 
      Log.d("finishing", "The try catch function"); 
     } catch (Exception e) { 
      // show error 
     }*/ 

正如你所看到的,我已经硬编码了一个特定图像的路径,当它启动并运行时,这是动态的。 任何人都可以看到我做错了什么?我是否遗漏了一些东西?我知道我使用setChunked和setContenttype - 是否有setContent选项? 任何帮助将不胜感激。

谢谢, jr83。

回答

1

您可以使用通过发送多部分信息来上传图像;您可能会发现this讨论有用。