Передача файлов на сайт

Рейтинг: 0Ответов: 1Опубликовано: 15.10.2014

Добрый день!

Как организовать передачу файлов на сайт, к примеру, картинки, видео и прочие данные. Пока я передаю картинки методом POST, преобразовывая картинку в длинную строку, и передаю параметром.
Это долго, и я понимаю, что не так это делается, как пример, то же Instagram: как-то подгружает фотографии более высокого качества очень быстро. Я не могу передать фотографию меньшего качества так быстро.
И как быть с видеофайлами?!
Наверняка существуют методы для более качественной и быстрой передачи данных.

Заранее спасибо!

Ответы

▲ 2

Multipart/form-data немного теории, просто первая ссылка подробнее сами найдете и вот пример с использованием библиотек httpcore и httpmime

private long loadPhoto(InputStream ims, String name) {
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(Api.BASE_URL + Api.IMAGES);
        MultipartEntityBuilder multipartEntity = MultipartEntityBuilder
                .create();

        try {

            multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
            multipartEntity.addBinaryBody("image[data]",
                    ims, ContentType.MULTIPART_FORM_DATA,
                    "name");
            multipartEntity.addTextBody("token", Util.getToken(getApplicationContext()));
            post.setEntity(multipartEntity.build());
            HttpResponse response = client.execute(post);
            HttpEntity entity = response.getEntity();
            InputStream is = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "UTF-8"));
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            JSONObject object = new JSONObject(sb.toString());
            Log.d("img id ", " " + object.getJSONObject("image").getLong("id"));
            return object.getJSONObject("image").getLong("id");
        } catch (IOException e) {
            Log.e("img", e.getMessage());
        } catch (Exception e) {
            Log.e("img", e.getMessage());
        }
        return -1;
    }