2017-01-18 13 views
1

Я пытаюсь загрузить изображение, используя этот код:как загрузить изображение, используя массив байтов

private String uploadFile() { 
String responseString = null; 

try { 

    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost(Config.FILE_UPLOAD_URL_M); 



    Log.i("UploadApp", "upload url: " + Config.FILE_UPLOAD_URL_M); 


    AndroidMultiPartEntity entity; 
    entity = new AndroidMultiPartEntity(
    new AndroidMultiPartEntity.ProgressListener() { 

    @Override 
    public void transferred(long num) { 
    // publishProgress((int) ((num/(float) totalSize) * 100)); 
    } 
    }); 

    File sourceFile; 
    sourceFile = new File(compressImage(filePath)); 

    Log.i("UploadApp", "file path: " + filePath); 

    // Adding file data to http body 

    entity.addPart("f", new FileBody(sourceFile)); //problem is here 


    entity.addPart("category", new StringBody("Bill")); 
    entity.addPart("description", new StringBody("test single")); 
    entity.addPart("file", new StringBody("unknown1")); 
    entity.addPart("clientid", new StringBody("4")); 



    totalSize = entity.getContentLength(); 
    httppost.setEntity(entity); 

    // Making server call 
    HttpResponse response = httpclient.execute(httppost); 
    HttpEntity r_entity = response.getEntity(); 

    int statusCode = response.getStatusLine().getStatusCode(); 
    if (statusCode == 200) { 
    // Server response 
    responseString = EntityUtils.toString(r_entity); 
    } else { 
    responseString = "Error occurred! Http Status Code: " + statusCode; 
    } 

} catch (ClientProtocolException e) { 
    responseString = e.toString(); 
    Log.e("UploadApp", "exception: " + responseString); 
} catch (IOException e) { 
    responseString = e.toString(); 
    Log.e("UploadApp", "exception: " + responseString); 
} 

return responseString; 

} 

У меня есть веб-сервис для загрузки изображения, которое имеет 5 параметров и 4 из них являются строкой, но один байт array (byte [] f)

Основная проблема: Как преобразовать исходный файл (изображение) в массив байтов, чтобы загрузить изображение на сервер в приведенном выше коде, соответствующем этой веб-службе.

+1

Ваш код уже загружает файл в виде массива байтов. Обычная загрузка нескольких частей делает это. – greenapps

ответ

1

Вы можете использовать андроид третьей стороны "AndroidAsync" .Вы может сделать какие-то вещи из этого code.plz проверить это

https://github.com/koush/AndroidAsync

Благодарности

0

в первую очередь, от источника файл, вы можете получить абсолютный путь, а затем вызывать метод загрузки

String mCurrentPhotoPath = sourceFile.getAbsolutePath(); 


private String upload() { 
     Bitmap bm = BitmapFactory.decodeFile(mCurrentPhotoPath); 
     ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
     bm.compress(Bitmap.CompressFormat.JPEG, 50, bao); 
     byte[] ba = bao.toByteArray(); 
     return Base64.encodeToString(ba, Base64.DEFAULT); 

    } 
+0

Как вызвать метод ur здесь: entity.addPart («f», новый FileBody (sourceFile)) ;? –

 Смежные вопросы

  • Нет связанных вопросов^_^