86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
1

Функция для загрузки файла на сервер

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

Author24 — интернет-сервис помощи студентам
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2013, 16:11
Ответы с готовыми решениями:

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

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

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

Не передается в контроллер имя выбранного файла для загрузки на сервер
Задача: вывести в модальном окне выбранную картинку, сверху наложить Cropper, затем по кнопке...

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

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

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

Добавлено через 35 секунд
Цитата Сообщение от spydark91 Посмотреть сообщение
в эклипсе есть встроенный LogCat
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
25.06.2013, 19:53  [ТС] 7
дак причем тут эклипс если я собрал проект в apk файл и закинул его на телефон..
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.06.2013, 21:47 8
при том, что в нем есть LogCat.
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
29.06.2013, 01:39  [ТС] 9
дак телефон к компу не подключен
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.06.2013, 01:44 10
так подключите
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
30.06.2013, 15:47  [ТС] 11
подключил, запускаю
при выборе картинки в еклипсе вылазит такое окошечко, нажимаю "да", тогда открываются куча окошечек , а приложение на телефоне не вылетакет( но и картинки на сервере нет), нажимаю "нет" на телефоне черный экран, в логкет пусто
Миниатюры
Функция для загрузки файла на сервер  
0
86 / 86 / 13
Регистрация: 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
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.06.2013, 15:51 13
нельзя вызывать диалог не в UI потоке.
0
86 / 86 / 13
Регистрация: 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
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.06.2013, 16:01 15
естественно Uri это не путь в файловой системе.
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
30.06.2013, 16:03  [ТС] 16
а как можно его выцарапать оттуда?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.06.2013, 16:03 17
Java
1
2
3
4
5
6
7
public String getRealPathFromURI(Uri contentUri) {
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(contentUri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
1
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
04.07.2013, 15:32  [ТС] 18
как из не UI потока вызывать диалоги и тд...?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.07.2013, 21:09 19
только в UI потоке.
чтобы выполнить что-то в UI потоке используйте Handler/AsyncTask/view.post()/activity.runOnUiThread()
1
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
04.07.2013, 23:33  [ТС] 20
а можно по примерчику дял view.post()/activity.runOnUiThread()
0
04.07.2013, 23:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.07.2013, 23:33
Помогаю со студенческими работами здесь

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

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

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru