2013-07-13 3 views
0

게시 방법을 사용하여 http 서버에 이미지 파일을 업로드해야합니다. 내 코드는 나에게 올바른 방법을 working.Suggest 아니에요안드로이드에서 POST 방법을 사용하여 이미지 파일을 HTTP 서버에 업로드

try { 
HttpClient httpclient = new DefaultHttpClient(); 

HttpPost httppost = new HttpPost(url); 

InputStreamEntity reqEntity = new InputStreamEntity(
     new FileInputStream(file), -1); 
reqEntity.setContentType("binary/octet-stream"); 

httppost.setEntity(reqEntity); 
HttpResponse response = httpclient.execute(httppost); 
//Do something with response... 

} catch (Exception e) { 
// show error 
} 

여기에있다.

참고 : 서버는 IIS 서버입니다.

+1

도움이 될 것입니다 희망'그것은 아마도 소프트웨어에서 가장 쓸모없는 문을 working.' 아닙니다. 잘못된 이미지가 게시 되었습니까? 앱이 다운 되나요? 이미지가 게시되지 않았습니까? 서버가 충돌합니까? 태양이 빛나는 것을 멈출 수 있습니까? – Simon

+0

오른쪽 이미지 만 업로드했습니다. 응용 프로그램이 손상되지 않았습니다. 업로드 할 때 InputStreamEntity에는 파일 data.But이 있습니다. 서버 측에서는 파일 데이터가 null입니다. 내 의견에 많은 세부 사항이 있다고 생각했습니다. 가능한 경우 Simon이라는 유용한 정보를 제안하십시오. –

답변

0

당신은 당신의 코드가 있어야한다 이것에 대한

를 필요한 경우 여러 부분에서 보내기 reqEntity.setChunked(true);을 시도 할 수 있습니다

InputStreamEntity reqEntity = new InputStreamEntity(
     new FileInputStream(file), -1); 
reqEntity.setContentType("binary/octet-stream"); 
reqEntity.setChunked(true); 
httppost.setEntity(reqEntity); 

하지만 크기에 파일 무거운 그래서 당신이 사용하는 경우는

HttpClient httpclient = new DefaultHttpClient(); 

HttpPost httppost = new HttpPost(url); 

File f = new File(file); 
FileInputStream fileInputStream = new FileInputStream(f); 
InputStreamEntity reqEntity = new InputStreamEntity(fileInputStream, f.length()); 

httppost.setEntity(reqEntity); 
reqEntity.setContentType("binary/octet-stream"); 
HttpResponse response = httpclient.execute(httppost); 
HttpEntity responseEntity = response.getEntity(); 

if (responseEntity != null) { 
    responseEntity.consumeContent(); 
} 

httpclient.getConnectionManager().shutdown(); 
+0

나는 이것도 시도했다. 그러나 나는 파일을 업로드하지 않았다 –

+0

제발 logcat을 게시하십시오! –

0

나는 또한이 시점에서 며칠 전에 갇혀 있었고 아무 것도 작동하지 못했습니다. 나는 WCF 휴식 서비스를 사용하고 있었고 15-20 일을 보냈습니다. 마지막으로 나는 WCF를 webservice로 바꿨고 이제는 이미지를 업로드하고 서비스를 매우 쉽게 호출 할 수있게되었습니다. SOAP 객체를 사용하여 호출합니다.

private String RegisterUser(String[] parameter, String image) { 
     SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, 
       OPERATION_NAME); 

     request.addProperty("param1", parameter[0].toString()); 
     request.addProperty("param2", parameter[1].toString()); 
     request.addProperty("profilepic", image); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
       SoapEnvelope.VER11); 
     envelope.dotNet = true; 
     envelope.setOutputSoapObject(request); 
     HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS); 
     Object response = null; 

     try { 
      httpTransport.call(SOAP_ACTION + OPERATION_NAME, envelope); 
      response = envelope.getResponse(); 
     } catch (Exception exception) { 
      response = exception.toString(); 
     } 
     return response.toString(); 
    } 

문자열을 내 이미지로 변환 한 다음 모든 것이 매우 부드럽습니다.

webservice를 사용하려는 경우 시도해 볼 수 있습니다. 이 당신에게

감사합니다,
Sourabh

관련 문제