С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Progressbar при передаче файла на сервер - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Тормозит ViewFlipper http://www.cyberforum.ru/android-dev/thread1548602.html
нужно реализовать прокрутку картинок. Картинки лежат в ресурсах. Для прокрутки использую ViewFlipper. Флиппер тормозит. Уже день ковыряюсь, так что немножко оптимизировал. Использую 3 ImageView...
Программирование Android Как сформировать JSON для данных разных категорий? У меня есть данные разных категорий: список контактов телефона, текстовые сообщения,координаты местоположения, фото(изображения) в формате Base64 и мне нужно эти данные передать на сервер по TCP и... http://www.cyberforum.ru/android-dev/thread1548600.html
Программно нарисовать тетрадную клетку Программирование Android
Реально ли программно нарисовать тетрадную клетку? Или ячейки заданного размера, чтоб выглядели как тетрадь в клетку
Программирование Android Google Analytics v4 не работает с android ниже 5 версии
Раньше в приложении использовал аналитику третьей версии. Решил перебраться на четвертую, но возникла проблема. В приложении одно активити и несколько фрагментов, на android 5.0+ все работает...
Программирование Android Работа с фрагментами http://www.cyberforum.ru/android-dev/thread1548241.html
Здравствуйте! Имеется активити package com.example.des.farmer; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.TabLayout; import...
Программирование Android Возвращение функий двух значений Смотрите... У меня два числа, которые вещественные (могут быть). Я каждое (!) число разделил на два ArrayList то что до точки и после. Есть функция, которая складывает столбиком. Сначала мы... подробнее

Показать сообщение отдельно
Hank
60 / 51 / 4
Регистрация: 28.12.2011
Сообщений: 289

Progressbar при передаче файла на сервер - Программирование Android

09.10.2015, 23:42. Просмотров 287. Ответов 6
Метки (Все метки)

Добрый день!

Имею код для отправки файла на сервер
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
public String sendPhoto(File file){
        String total = "";
        String fileName = file.getName();
 
        HttpURLConnection conn = null;
        DataOutputStream dos = null;
        String lineEnd = "\r\n";
        String twoHyphens = "--";
        String boundary = "*****";
        int bytesRead, bytesAvailable;
        byte[] buffer;
        int maxBufferSize = 1024;
 
        // open a URL connection to the Servlet
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
 
            String urlSendPhoto = "my url";
            URL url = new URL(urlSendPhoto);
 
        // Open a HTTP  connection to  the URL
            conn = (HttpURLConnection) url.openConnection();
            conn.setDoInput(true); // Allow Inputs
            conn.setDoOutput(true); // Allow Outputs
            conn.setUseCaches(false); // Don't use a Cached Copy
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Connection", "Keep-Alive");
            conn.setRequestProperty("ENCTYPE", "multipart/form-data");
            conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
            conn.setRequestProperty("nameFile", fileName);
 
            dos = new DataOutputStream(conn.getOutputStream());
 
            dos.writeBytes(twoHyphens + boundary + lineEnd);
            dos.writeBytes("Content-Disposition: form-data; name="nameFile";filename=""
                    + fileName + """ + lineEnd);
            dos.writeBytes(lineEnd);
 
            // create a buffer of  maximum size
            bytesAvailable = fileInputStream.available();
            buffer = new byte[maxBufferSize];
            int startProcess = bytesAvailable;
            int progress = 0;
            while ((bytesRead = fileInputStream.read(buffer)) > 0) {
                dos.write(buffer, 0, bytesRead);
                progress += bytesRead;
               //тут производится обновление прогрессбара
            }
 
            // send multipart form data necesssary after file data...
            dos.writeBytes(lineEnd);
            dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
 
            // Responses from the server (code and message)
            fileInputStream.close();
            dos.flush();
            dos.close();
            InputStream inputStream = conn.getInputStream();
            InputStreamReader input = new InputStreamReader(inputStream);
            BufferedReader reader = new BufferedReader(input);
            int code = conn.getResponseCode();
            String line;
            while ((line = reader.readLine()) != null){
                total += line;
            }
            Log.i("uploadFile", "HTTP Response is : " + total);
 
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        return total;
с обновлением прогресса проблем нет, проблема в том, что выполнение программы тормозится на строке
Java
1
 InputStream inputStream = conn.getInputStream();
Поэтому получается ерунда - прогресс дошел до 100%, но программа все равно задумывается.
Если убираю эту строку, то файл на сервер не передается.
Читал на stackoverflow аналогичную тему, но там сообщество решение так не подсказало.
Может тут народ подскажет. Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.