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

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

14.12.2012, 01:19. Просмотров 2166. Ответов 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/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2012, 01:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Загрузка файлов на сервер и progressbar (Программирование Android):

Progressbar при передаче файла на сервер
Добрый день! Имею код для отправки файла на сервер public String...

Загрузка картинки на сервер
public void sendMedia(String urlAddr, String filePath) { final String...

Фото и загрузка на сервер
Привет! Сильно не ругайтесь за вопрос, но перерыл пол гугла даже пытался...

Загрузка картинки на сервер
Здравствуйте, такой вопрос. У меня есть php сервер и я хочу чтобы мое...

Загрузка изображений на сервер
Здравствуйте. Пытаюсь загрузить изображение на свой сервер в интернете. Нашел...

Загрузка фото из галереи на сервер
Сделал в приложении добавление фото из галереи на сервер. У меня все работает....

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 01:19
Привет! Вот еще темы с решениями:

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

Загрузка/отгрузка файлов с авторизацией
Авторизация - простой пост запрос с полями логина и пароля. Как войти перед тем...

Самый простой метод отправки файлов на сервер
Какой это метод? Известен путь до файла, который нужно отправить. Как его...

Как загрузить на Ftp сервер список файлов?
Этот код перестает работать после передачи первого файла. Помогите разобраться...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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