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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
#1

Функция для загрузки файла на сервер - Программирование Android

23.06.2013, 16:11. Просмотров 2961. Ответов 20
Метки нет (Все метки)

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
public void sendMedia(String urlAddr, String filePath) {
            final String serverAddress = urlAddr;
            final File file = new File(filePath);
            
            Runnable r = new Runnable() {
                public void run() {   
                    try {
                        HttpParams params = new BasicHttpParams();
                        params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
                        DefaultHttpClient mHttpClient = new DefaultHttpClient(params);
                        final HttpPost request = new HttpPost(serverAddress);
                        final MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.STRICT);
                        final FileBody fileBody = new FileBody(file);
                        reqEntity.addPart("p", fileBody);                      
                      //  reqEntity.addPart("id", new StringBody("some string data"));
                        request.setEntity(reqEntity);
                        final HttpResponse response = mHttpClient.execute(request); 
                        
    
                    } catch (Exception e) {
                        showDialog("Ошибка");
                    }
                }
            };
            new Thread(r).start();
        }
как вы думаете, работоспособна ли эта функция ?
использую так
Java
1
2
3
4
5
6
7
8
9
10
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
         super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 
         if (resultCode == RESULT_OK) {
             Uri selectedImage = imageReturnedIntent.getData();
             final pictureView img = (pictureView)findViewById(R.id.img);
             img.setImageURI(selectedImage);
             
             sendMedia("http:/.../load.php",selectedImage.toString());
         }
     }
Добавлено через 29 секунд
проверить не могу, тк на эмуляторе файл не выбрать..

Добавлено через 19 часов 58 минут
тестирование на реальном устройстве показало что приложение падает..
т.е. что - то тут не так..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2013, 16:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция для загрузки файла на сервер (Программирование Android):

% загрузки файла - Программирование Android
Гружу из сети файл по примеру из ...

Передача файла с FTP в папку загрузки Планшета - Программирование Android
Добрый день, подскажите пожалуйста, почему программа согласно отладчика затыкается на строке с new FileOutputStream(downloadFile1). Сама...

Функция загрузки файла на сервер и сразу его переименования! - PHP
Написал код который грузит файл на сайт, переименовывает его если есть русские сиволы и недопустимые символы: <?php ...

Написать форму для загрузки файла на сервер, в свою рабочую папку (с проверкой размера файла) - PHP
Написать форму для загрузки файла на сервер, в свою рабочую папку. И должен проверяться размер файла.если заданный текстовый файл больше...

Программа на PERL для загрузки и сохранения файла на сервер - Perl
помогите, нужна программа на PERL для загрузки и сохранения файла на сервер(фото, текстовые данные). Заранее благодарен.

Как из Web приложения на c# вызвать диалог для загрузки файла на ASP сервер? - C# ASP.NET
Товарищи как из Web приложения на c# вызвать диалог для загрузки файла на ASP сервер? Сама загрузка делается через...

20
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.06.2013, 17:07 #2
а что в логах?
0
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
24.06.2013, 17:04  [ТС] #3
дак как логи то получить..?
на эмуляторе не проверить, а с телефона логи откуда взять?
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 17:42 #4
LogCat
0
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
24.06.2013, 18:11  [ТС] #5
поставил https://play.google.com/store/apps/d...n.logcat&hl=ru ,но разобрать какие логи к чему относятся там очень затруднительно, тк они постоянно обновляются и черт ногу там сломит

мб я как то не верно поток запускаю

или нельзя так Uri в строку конвертировать..?
Java
1
sendMedia("http:/.../load.php",selectedImage.toString());
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.06.2013, 18:22 #6
Цитата Сообщение от spydark91 Посмотреть сообщение
но разобрать какие логи к чему относятся там очень затруднительно, тк они постоянно обновляются и черт ногу там сломит
в LogCat есть фильтры по приложениям и не только.

Добавлено через 35 секунд
Цитата Сообщение от spydark91 Посмотреть сообщение
в эклипсе есть встроенный LogCat
0
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
25.06.2013, 19:53  [ТС] #7
дак причем тут эклипс если я собрал проект в apk файл и закинул его на телефон..
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.06.2013, 21:47 #8
при том, что в нем есть LogCat.
0
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
29.06.2013, 01:39  [ТС] #9
дак телефон к компу не подключен
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.06.2013, 01:44 #10
так подключите
0
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
30.06.2013, 15:47  [ТС] #11
подключил, запускаю
при выборе картинки в еклипсе вылазит такое окошечко, нажимаю "да", тогда открываются куча окошечек , а приложение на телефоне не вылетакет( но и картинки на сервере нет), нажимаю "нет" на телефоне черный экран, в логкет пусто
0
Миниатюры
Функция для загрузки файла на сервер  
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
30.06.2013, 15:49  [ТС] #12
запустил очередной раз
на телефоне велетело
в логкет такая картина
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
06-30 15:47:49.489: D/dalvikvm(8350): GC_EXTERNAL_ALLOC freed 167K, 46% free 3204K/5895K, external 1197K/1709K, paused 29ms
06-30 15:47:50.781: D/dalvikvm(8350): GC_FOR_MALLOC freed 100K, 44% free 3466K/6151K, external 24888K/26936K, paused 34ms
06-30 15:47:51.171: W/dalvikvm(8350): threadid=25: thread exiting with uncaught exception (group=0x4001d5a0)
06-30 15:47:51.191: E/AndroidRuntime(8350): FATAL EXCEPTION: Thread-32
06-30 15:47:51.191: E/AndroidRuntime(8350): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
06-30 15:47:51.191: E/AndroidRuntime(8350):     at android.os.Handler.<init>(Handler.java:121)
06-30 15:47:51.191: E/AndroidRuntime(8350):     at android.app.Dialog.<init>(Dialog.java:122)
06-30 15:47:51.191: E/AndroidRuntime(8350):     at android.app.AlertDialog.<init>(AlertDialog.java:63)
06-30 15:47:51.191: E/AndroidRuntime(8350):     at android.app.AlertDialog.<init>(AlertDialog.java:59)
06-30 15:47:51.191: E/AndroidRuntime(8350):     at android.app.AlertDialog$Builder.create(AlertDialog.java:786)
06-30 15:47:51.191: E/AndroidRuntime(8350):     at com.example.pr.userImgDialog_Activity.showDialog(userImgDialog_Activity.java:232)
06-30 15:47:51.191: E/AndroidRuntime(8350):     at com.example.pr.userImgDialog_Activity.access$1(userImgDialog_Activity.java:223)
06-30 15:47:51.191: E/AndroidRuntime(8350):     at com.example.pr.userImgDialog_Activity$3.run(userImgDialog_Activity.java:216)
06-30 15:47:51.191: E/AndroidRuntime(8350):     at java.lang.Thread.run(Thread.java:1027)
06-30 15:47:51.341: D/WindowManagerImpl(8350): finishRemoveViewLocked, mViews[1]: com.android.internal.policy.impl.PhoneWindow$DecorView@405b1ff0
06-30 15:47:55.605: D/Process(8350): killProcess, pid=8350
06-30 15:47:55.605: D/Process(8350): dalvik.system.VMStack.getThreadStackTrace(Native Method)
06-30 15:47:55.605: D/Process(8350): java.lang.Thread.getStackTrace(Thread.java:745)
06-30 15:47:55.605: D/Process(8350): android.os.Process.killProcess(Process.java:797)
06-30 15:47:55.605: D/Process(8350): com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:108)
06-30 15:47:55.605: D/Process(8350): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:854)
06-30 15:47:55.605: D/Process(8350): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:851)
06-30 15:47:55.605: I/Process(8350): Sending signal. PID: 8350 SIG: 9
Добавлено через 1 минуту
походу что-то не так с потоком
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.06.2013, 15:51 #13
нельзя вызывать диалог не в UI потоке.
0
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
30.06.2013, 15:56  [ТС] #14
а, ну да, как всегда я не из ui потока диалог показываю
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
            Runnable r = new Runnable() {
                public void run() {   
                    try {
                        HttpParams params = new BasicHttpParams();
                        params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
                        DefaultHttpClient mHttpClient = new DefaultHttpClient(params);
                        final HttpPost request = new HttpPost(serverAddress);
                        final MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.STRICT);
                        final FileBody fileBody = new FileBody(file);
                        reqEntity.addPart("p", fileBody);                      
                      //  reqEntity.addPart("id", new StringBody("some string data"));
                        request.setEntity(reqEntity);
                        final HttpResponse response = mHttpClient.execute(request); 
                        
    
                    } catch (Exception e) {
                        //showDialog("Ошибка");
                        Log.d("ss", "error");
                    }
                }
            };
            new Thread(r).start();
в логкате
Java
1
2
3
06-30 15:52:57.910: D/dalvikvm(8508): GC_EXTERNAL_ALLOC freed 97K, 45% free 3208K/5831K, external 1197K/2395K, paused 55ms
06-30 15:52:59.562: D/dalvikvm(8508): GC_FOR_MALLOC freed 101K, 44% free 3468K/6087K, external 24888K/26936K, paused 35ms
06-30 15:52:59.912: D/ss(8508): error
Добавлено через 2 минуты
Java
1
2
3
4
5
 catch (Exception e) {
                        //showDialog("Ошибка");
                        Log.d("ssss", e.getMessage());
                        Log.d("ss", "error");
                    }
Java
1
06-30 15:56:01.670: D/ssss(8697): /content:/media/external/images/media/1 (No such file or directory)
Добавлено через 29 секунд
хм, это как

Добавлено через 56 секунд
мб всеже дело в том, что нельзя uri в строку превращать так?
Java
1
2
3
4
5
             Uri selectedImage = imageReturnedIntent.getData();
             final pictureView img = (pictureView)findViewById(R.id.img);
             img.setImageURI(selectedImage);   
             
             sendMedia("http://../load.php",selectedImage.toString());
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.06.2013, 16:01 #15
естественно Uri это не путь в файловой системе.
0
30.06.2013, 16:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2013, 16:01
Привет! Вот еще темы с ответами:

Функция загрузки изображения на сервер - PHP
Вроде код должен работать как надо... я никак не могу найти в чем проблема, но функция сохранения картинки на сервер не работает, взгляните...

Сохранение оригинального название файла, после загрузки файла на сервер - PHP
Есть код, который загружает файл в папку if($_FILES){ if(isset($_FILES)){ $testName = $_FILES; } else{ ...

MySQL Импорт данных из файла .csv в mysql сразу же после загрузки файла на сервер - PHP БД
Коллеги! Добрый день! Помогите пожалуйста. Задача состоит в том, чтобы через форму страницы загрузить файл расширения .csv на сервер и...

Загрузки файла на сервер - PHP
Не работает загрузка файла на сервер, вот код: &lt;div style=&quot;width:800px; min-height:600px; margin:0 auto; border:1px solid #CCC;...


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

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

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