Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Chipito
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 29
#1

Загрузка файлов на сервер и progressbar - Программирование Android

14.12.2012, 01:19. Просмотров 2103. Ответов 0
Метки нет (Все метки)

Сообственно имеется код:
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
    public void Uploads(String d) throws UnsupportedEncodingException, MalformedURLException
                {
 
                   
                     String dir = URLEncoder.encode(d, "utf-8");
                
 
                    try {
             
                    dsize=0;
                     
 
                            
                        HttpClient httpclient = getThreadSafeClient();
                        HttpPost postRequest = new HttpPost(
                                "url");
                    //  ByteArrayBody bab = new ByteArrayBody(data, filePath);
                        File file = new File(filePath);
                          
                         FileBody bin = new FileBody(file);
                        /* InputStream inputStream = bin.getInputStream();
                         long totalSize = bin.getContentLength();
                         pr.setMax((int) totalSize);
                         byte[] buffer = new byte[2048];
                         int bufferLength = 0;
                         while ((bufferLength = inputStream.read(buffer)) > 0) {
                                
                             dsize+= bufferLength;
                             System.out.println(dsize);
                            
                                pr.setProgress (dsize);
                            }
                           inputStream.close(); */
                        MultipartEntity reqEntity = new MultipartEntity(
                                HttpMultipartMode.BROWSER_COMPATIBLE);
                        reqEntity.addPart("images[]", bin);
                        postRequest.setEntity(reqEntity);
                        HttpResponse response = httpclient.execute(postRequest);
                        BufferedReader reader = new BufferedReader(new InputStreamReader(
                                response.getEntity().getContent(), "UTF-8"));
                        
                         
                        
                        String sResponse;
                        StringBuilder s = new StringBuilder();
 
                        while ((sResponse = reader.readLine()) != null) {
                            s = s.append(sResponse);
                        }
                        System.out.println("Response: " + s);
                    
 
                    } catch (Exception e) {
                    }
                }
    }
Проблема в том что при маленьких размерах файла, progressbar работает нормально( то что закоментировано)
Но если размер файла 2-3 мб, то отображается неправильно. Как в данной ситуации лучше получить количество залитых байт?

Добавлено через 1 час 45 минут
Разобрался, сделал выполнение пост запроса в отдельном потоке:

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
    public void Uploads(String d) throws UnsupportedEncodingException, MalformedURLException
                {
 
                   
                     final String dir = URLEncoder.encode(d, "utf-8");
                
 
                    try {
                    dsize=0;
                    int count=0;
                     
 
             
                    //  ByteArrayBody bab = new ByteArrayBody(data, filePath);
                        File file = new File(filePath);
                         final FileBody bin = new FileBody(file);
                           new Thread(new Runnable() {
                                public void run() {
                                    
                                    HttpClient httpclient = getThreadSafeClient();
                                    HttpPost postRequest = new HttpPost(
                                            url);
                                    MultipartEntity reqEntity = new MultipartEntity(
                                            HttpMultipartMode.BROWSER_COMPATIBLE);
                                    reqEntity.addPart("images[]", bin);
                                    postRequest.setEntity(reqEntity);
                                     HttpResponse response=null;
                                     try {
                                        response = httpclient.execute(postRequest);
                                    } catch (ClientProtocolException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                        BufferedReader reader = null;
                                        try {
                                            reader = new BufferedReader(new InputStreamReader(
                                                    response.getEntity().getContent(), "UTF-8"));
                                        } catch (UnsupportedEncodingException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        } catch (IllegalStateException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        } catch (IOException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        }
                                        String sResponse;
                                        StringBuilder s = new StringBuilder();
                                      
                                       try {
                                        while ((sResponse = reader.readLine()) != null) {
                                                
 
                                                s = s.append(sResponse);
                                            }
                                    } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                        try {
                                            Check(currdir);
                                        } catch (UnsupportedEncodingException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        }
                                        System.out.println("Response: " + s);
                                }
                            }).start();
                          InputStream inputStream = bin.getInputStream();
                             long totalSize = bin.getContentLength();
                             pr.setMax((int) totalSize);
                             byte[] buffer = new byte[1024];
                             int bufferLength = 0;
                             while ((bufferLength = inputStream.read(buffer)) > 0) {
                                
                                 dsize+= bufferLength;
                                 System.out.println(dsize);
                                    pr.setProgress (dsize);
                                
                                }
                                
                             inputStream.close();
                    
 
                    
 
                    } catch (Exception e) {
 
                    }
                }
 
        
    
    }
Добавлено через 1 час 41 минуту
http://toolongdidntread.com/android/...-progress-bar/
Вот еще кому интересно, реализация как раз под метод загрузки файлов
http://vikaskanani.wordpress.com/201...st-multi-part/
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2012, 01:19     Загрузка файлов на сервер и progressbar
Посмотрите здесь:
Android Progressbar при передаче файла на сервер
Фото и загрузка на сервер Android
Android Загрузка картинки на сервер
Android Загрузка картинки на сервер
Android Загрузка изображений на сервер
Загрузка фото из галереи на сервер Android
Сохранение и загрузка файлов Android
Загрузка/отгрузка файлов с авторизацией Android
Android Как загрузить на Ftp сервер список файлов?
Android ProgressBar
Остановка ProgressBar Android
Цвет ProgressBar Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru