2013-08-06 2 views
2

Я хочу отправить файл с Android-устройства в веб-api с параметром name, chunk, file data. У меня есть этот код: он не возвращает мне никакой ошибки. Я не знаю, что я делаю неправильно. Пожалуйста, помогите, я трачу много времени на это, и он все еще не работает.Как загрузить изображение в Web Api с помощью http-клиента?

FileBody localFileBody = new FileBody(new File("/storage/sdcard0/Pictures/Images/angel_productshot.jpg"), 
       "image/jpg"); 

     MultipartEntity localMultipartEntity = new MultipartEntity(
       HttpMultipartMode.BROWSER_COMPATIBLE); 

     HttpParams httpParameters = new BasicHttpParams(); 
     HttpConnectionParams.setConnectionTimeout(httpParameters, 15000); 
     HttpConnectionParams.setSoTimeout(httpParameters, 15000); 
     HttpPost httpPost = new HttpPost(
       "http://phdsafar4.myserver.com.ph:1217/api/fileupload"); 
     HttpClient httpclient = new DefaultHttpClient(httpParameters); 
     httpPost.addHeader("Authorization","Basic " + Base64.encodeToString(
         (username + ":" + password).getBytes(), Base64.NO_WRAP)); 

     httpPost.setHeader("Content-Type", "multipart/form-data"); 
     httpPost.setHeader("Accept", "application/image"); 
     localMultipartEntity.addPart("name", new StringBody(filename)); 
     localMultipartEntity.addPart("chunk", new StringBody("1")); 
     localMultipartEntity.addPart("file data", localFileBody); 
     httpPost.setEntity(localMultipartEntity); 
     HttpResponse localHttpResponse = httpclient.execute(httpPost); 
     Log.i("response upload", localHttpResponse.toString()); 
     Log.i("Multipart Entity", localMultipartEntity.toString()); 
+0

Проверить http://stackoverflow.com/questions/4623507/post-values-and-upload-image-to-php-server-in -android/4633474 # 4633474 ответ для загрузки изображения в веб-службу php. –

+0

Пожалуйста, скажите мне, что не так в моем коде, почему он не дает результата. – NewDroidDev

ответ

4
this work for me try it... 
to use MultipartEntity must be add this two jar file in your project lib 
1. httpmime-4.0.1.jar 
2. apache-mime4j-0-.6.jar 

MultipartEntity multipartEntity = new MultipartEntity(); 
File image1 = new File(imagePath); 
multipartEntity.addPart("Image1",image1); 
File image2 = new File(imagePath2); 
multipartEntity.addPart("Image2",image2); 
HttpClient client = new DefaultHttpClient(); 
HttpPost post = new HttpPost(Url); 
post.setEntity(multipartEntity); 
HttpResponse response = client.execute(post); 
HttpEntity resEntity = response.getEntity(); 
response_str = EntityUtils.toString(resEntity); 
+0

У меня уже есть httpmime-4.1.2.jar и ksoap2-android-assembly-2.5.8-jar-with-dependencies.jar – NewDroidDev

+0

спасибо за предложение библиотеки – NewDroidDev

+0

большое спасибо, он работал как шарм ,, :))спасибо – Dave

1

Пройдите следующий код

public static String uploadImage(Bitmap bitmap, String imageName, String imageUrl) { 

    // String image_description = edtImageDescription.getText().toString(); 
    StringBuilder s = null;// = new StringBuilder(); 
    String sResponse; 

    try { 

     // --------------------------------------------------------------------------------- 

     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

     bitmap.compress(CompressFormat.JPEG, 75, bos); 

     byte[] data = bos.toByteArray(); 

     HttpClient httpClient = new DefaultHttpClient(); 
     HttpPost postRequest = new HttpPost(imageUrl); 

     ByteArrayBody imageByte = new ByteArrayBody(data, imageName); 

     MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 

     // sending a String param; 


     entity.addPart("image_description","Sample_Image") 

     entity.addPart("image_name", imageByte); 

     postRequest.setEntity(entity); 

     HttpResponse response = httpClient.execute(postRequest); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); 

     s = new StringBuilder(); 

     while ((sResponse = reader.readLine()) != null) { 

      s = s.append(sResponse); 

     } 

     Logger.logger("Utilities", "Response: " + s); 

    } catch (Exception e) { 

     Logger.logger("Utilities", "Some error came up"); 

    } 

    if (s != null) { 
     return s.toString(); 
    } else { 
     return null; 
    } 

} 
+0

Почему мне нужно получить растровое изображение Мне нужен файл, а не растровое изображение, потому что я использую этот код для отправки всех файлов, включая txt-файлы, а не только изображения – NewDroidDev

+0

@NewDroidDev, для отправки изображения на сервер вам нужно изменить его в массив байтов и массив байтов создается из растрового изображения. – mdDroid