Как разместить большое изображение с помощью base64 в Android? - PullRequest
2 голосов
/ 06 июля 2011

В настоящее время я работаю над одним проектом, который требует разместить данные в базе данных сервера. Здесь я публикую данные типа name, id, image и т. Д.

Я хочу передать изображение в виде двоичных данных. Для этого я конвертирую изображение в строку base64, а затем отправляю данные, но из-за HTTP-соединения с большим разрешением или размером изображения я получаю код ошибки 413, который сообщает, что URL слишком велик.

Пожалуйста, кто-нибудь может дать мне решение для этого? Здесь я даю вам свой код, который я реализовал.

значения

Bitmap b1 = (Bitmap) data.getExtras().get("data");
b1=Bitmap.createScaledBitmap(b1, 100,100, true);
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
b1.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
byte[] b = baos.toByteArray(); 
String base64String = Base64.encodeBytes(b);

Log.e("Base 64 conversion of image--------", base64String);

response = webService.doNetworkConnection("{\"method\":\"EventUploadPhoto\",\"data\":{\"ClientCode\":"
    + "\""
    + Util.clientCode
    + "\""
    + ",\"EventID\":"
    + "\""
    + itemId
    + "\""
    + ",\"ImageName\":"
    + "\""
    + filename
    + System.currentTimeMillis()
    + "\""
    + ",\"ImageData\":"
    + "\""
    + imgData
    + "\""
    + ",\"UserName\":"
    + "\""
    + username
    + "\""
    + ",\"TokenId\":"
    + "\""
    + tokenid
    + "\"" + "}}", "POST");

doNetworkConnection

public String doNetworkConnection(String request, String methodType) throws IOException {
    String str = java.net.URLEncoder.encode(request, "UTF-8");
    String resultstring = "";
    System.out.println("string request:" + request);

    int response = -1;

    try {
        URL url = new URL((mContext.getResources()
                        .getString(R.string.WebServiceUrl))
                        + "" + str);
        System.out.println("url:" + url);
        URLConnection conn = url.openConnection();

        HttpURLConnection httpConn = (HttpURLConnection) conn;
        httpConn.setAllowUserInteraction(false);
        httpConn.setInstanceFollowRedirects(true);
        httpConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        httpConn.connect();

        response = httpConn.getResponseCode();
        System.out.println("response code:" + response);

        if (response == HttpURLConnection.HTTP_OK) {
            InputStream is = httpConn.getInputStream();
            resultstring = convertinputStreamToString(is);
        } else {
            resultstring = "";             
        }
    } catch (Exception e) {
        resultstring = "";         
    }   
    System.out.println("result string:" + resultstring);

    return resultstring;
}

Здесь код ответа HTTP - 413, поэтому он говорит, что URL слишком велик и не может POST-изображение.

1 Ответ

0 голосов
/ 06 июля 2011

Если вы настроили HTTP: поскольку это просто строка, вы можете разбить ее на отдельные строки и отправить их по отдельности.Затем объедините их вместе на другой стороне.

В противном случае вы можете использовать FTP или получить более низкий уровень и передавать его по TCP / IP.Существуют библиотеки Java, такие как эта .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...