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

Загрузка изображений на сервер - Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Razor32
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 22
16.06.2014, 17:27     Загрузка изображений на сервер #1
Здравствуйте. Пытаюсь загрузить изображение на свой сервер в интернете. Нашел вот такой пример:
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
 
public class UploadAudioDemo extends Activity {
 
    private static final int SELECT_AUDIO = 2;
    String selectedPath = "";
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        openGalleryAudio();
    }
 
    public void openGalleryAudio(){
 
    Intent intent = new Intent();
        intent.setType("audio/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,"Select Audio "), SELECT_AUDIO);
   }
 
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
 
        if (resultCode == RESULT_OK) {
 
            if (requestCode == SELECT_AUDIO)
            {
                System.out.println("SELECT_AUDIO");
                Uri selectedImageUri = data.getData();
                selectedPath = getPath(selectedImageUri);
                System.out.println("SELECT_AUDIO Path : " + selectedPath);
                doFileUpload();
            }
 
        }
    }
 
    public String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
 
    private void doFileUpload(){
        HttpURLConnection conn = null;
        DataOutputStream dos = null;
        DataInputStream inStream = null;
        String lineEnd = "rn";
        String twoHyphens = "--";
        String boundary =  "*****";
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1*1024*1024;
        String responseFromServer = "";
        String urlString = "http://your_website.com/upload_audio_test/upload_audio.php";
        try
        {
         //------------------ CLIENT REQUEST
        FileInputStream fileInputStream = new FileInputStream(new File(selectedPath) );
         // open a URL connection to the Servlet
         URL url = new URL(urlString);
         // Open a HTTP connection to the URL
         conn = (HttpURLConnection) url.openConnection();
         // Allow Inputs
         conn.setDoInput(true);
         // Allow Outputs
         conn.setDoOutput(true);
         // Don't use a cached copy.
         conn.setUseCaches(false);
         // Use a post method.
         conn.setRequestMethod("POST");
         conn.setRequestProperty("Connection", "Keep-Alive");
         conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
         dos = new DataOutputStream( conn.getOutputStream() );
         dos.writeBytes(twoHyphens + boundary + lineEnd);
         dos.writeBytes("Content-Disposition: form-data; name="uploadedfile";filename="" + selectedPath + """ + lineEnd);
         dos.writeBytes(lineEnd);
         // create a buffer of maximum size
         bytesAvailable = fileInputStream.available();
         bufferSize = Math.min(bytesAvailable, maxBufferSize);
         buffer = new byte[bufferSize];
         // read file and write it into form...
         bytesRead = fileInputStream.read(buffer, 0, bufferSize);
         while (bytesRead > 0)
         {
          dos.write(buffer, 0, bufferSize);
          bytesAvailable = fileInputStream.available();
          bufferSize = Math.min(bytesAvailable, maxBufferSize);
          bytesRead = fileInputStream.read(buffer, 0, bufferSize);
         }
         // send multipart form data necesssary after file data...
         dos.writeBytes(lineEnd);
         dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
         // close streams
         Log.e("Debug","File is written");
         fileInputStream.close();
         dos.flush();
         dos.close();
        }
        catch (MalformedURLException ex)
        {
             Log.e("Debug", "error: " + ex.getMessage(), ex);
        }
        catch (IOException ioe)
        {
             Log.e("Debug", "error: " + ioe.getMessage(), ioe);
        }
        //------------------ read the SERVER RESPONSE
        try {
              inStream = new DataInputStream ( conn.getInputStream() );
              String str;
 
              while (( str = inStream.readLine()) != null)
              {
                   Log.e("Debug","Server Response "+str);
              }
              inStream.close();
 
        }
        catch (IOException ioex){
             Log.e("Debug", "error: " + ioex.getMessage(), ioex);
        }
      }
}
Далее вместо строчки:
Java
1
upLoadServerUri = "http://192.168.0.15/UploadToServer.php";
Вставляю свою строчку:
Java
1
upLoadServerUri = "http://cityquest.bl.ee/upload_image.php";
В upload_image.php находится:
PHP
1
2
3
4
5
6
7
8
9
10
11
< ?php
  
   $file_path = "uploads/";
     
   $file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
   if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
       echo "success";
   } else{
       echo "fail";
   }
? >
После запуска приложения у меня вроде бы успешно все загружается, но папка пустая.
1. Может ли быть, что загрузка не происходит из-за наличия на сервере логина и пароля? Я не могу понять, где нужно открыть права доступа на запись на этот сервер.
2. Возможно кто-то сталкивался с загрузкой изображений на хостинг изображений? Если можно, то подскажите. Подходит любая загрузка изображения в Интернет, на какой угодно сервер.

Хостинг регистрировал тут: http://hostinger.ru
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
16.06.2014, 17:33     Загрузка изображений на сервер #2
Razor32, попробуйте для начала воспользоваться консольной утилитой cURL или раширением для хрома PostMan. Чтобы локализовать проблему.
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
13.09.2015, 19:17     Загрузка изображений на сервер #3
Razor32, Использую ваш код, и вылазит ошибка
Лог ошибок
Кликните здесь для просмотра всего текста
09-13 21:21:05.698 2329-2329/com.ww4u.barter E/Debug﹕ error: null
java.io.IOException
at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:87)
at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:205)
at com.ww4u.barter.imageLoad.doFileUpload(imageLoad.java:95)
at com.ww4u.barter.imageLoad.onActivityResult(imageLoad.java:51)
at android.app.Activity.dispatchActivityResult(Activity.java:5204)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3298)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2715)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2760)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2216)
at android.app.ActivityThread.access$600(ActivityThread.java:149)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:4987)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
09-13 21:21:05.699 2329-2329/com.ww4u.barter E/Debug﹕ error: null
java.io.IOException
at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:87)
at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:205)
at com.ww4u.barter.imageLoad.doFileUpload(imageLoad.java:95)
at com.ww4u.barter.imageLoad.onActivityResult(imageLoad.java:51)
at android.app.Activity.dispatchActivityResult(Activity.java:5204)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3298)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2715)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2760)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2216)
at android.app.ActivityThread.access$600(ActivityThread.java:149)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:4987)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)

Кстати, строку
Java
1
dos.writeBytes("Content-Disposition: form-data; name="uploadedfile";filename="" + selectedPath + """ + lineEnd);
заменил на
Java
1
            dos.writeBytes("Content-Disposition: form-data; name='uploadedfile';filename=''" + selectedPath + "" + lineEnd);
так-как переменная selectedPath уходит во внутрь скобок.

Вот весь код(Хотя он вроде такой же, просто вместо аудио идет image)
Кликните здесь для просмотра всего текста
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
package com.ww4u.barter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
 
public class imageLoad extends Activity {
 
    private static final int SELECT_IMAGE = 2;
    String selectedPath = "";
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_load);
 
        openGalleryImage();
    }
 
    public void openGalleryImage(){
 
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,"Select Image "), SELECT_IMAGE);
    }
 
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
 
        if (resultCode == RESULT_OK) {
 
            if (requestCode == SELECT_IMAGE)
            {
                System.out.println("SELECT_IMAGE");
                Uri selectedImageUri = data.getData();
                selectedPath = getPath(selectedImageUri);
                System.out.println("SELECT_IMAGE Path : " + selectedPath);
                doFileUpload();
            }
 
        }
    }
 
    public String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
 
    private void doFileUpload(){
        HttpURLConnection conn = null;
        DataOutputStream dos = null;
        DataInputStream inStream = null;
        String lineEnd = "rn";
        String twoHyphens = "--";
        String boundary =  "*****";
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1*1024*1024;
        String responseFromServer = "";
        String urlString = "http://autostop.net76.net/upload_image.php";
        try
        {
            //------------------ CLIENT REQUEST
            FileInputStream fileInputStream = new FileInputStream(new File(selectedPath) );
            // open a URL connection to the Servlet
            URL url = new URL(urlString);
            // Open a HTTP connection to the URL
            conn = (HttpURLConnection) url.openConnection();
            // Allow Inputs
            conn.setDoInput(true);
            // Allow Outputs
            conn.setDoOutput(true);
            // Don't use a cached copy.
            conn.setUseCaches(false);
            // Use a post method.
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Connection", "Keep-Alive");
            conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
            dos = new DataOutputStream( conn.getOutputStream() );
            dos.writeBytes(twoHyphens + boundary + lineEnd);
            dos.writeBytes("Content-Disposition: form-data; name='uploadedfile';filename=''" + selectedPath + "" + lineEnd);
            dos.writeBytes(lineEnd);
            // create a buffer of maximum size
            bytesAvailable = fileInputStream.available();
            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            buffer = new byte[bufferSize];
            // read file and write it into form...
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
            while (bytesRead > 0)
            {
                dos.write(buffer, 0, bufferSize);
                bytesAvailable = fileInputStream.available();
                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                bytesRead = fileInputStream.read(buffer, 0, bufferSize);
            }
            // send multipart form data necesssary after file data...
            dos.writeBytes(lineEnd);
            dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
            // close streams
            Log.e("Debug","File is written");
            fileInputStream.close();
            dos.flush();
            dos.close();
        }
        catch (MalformedURLException ex)
        {
            Log.e("Debug", "error: " + ex.getMessage(), ex);
        }
        catch (IOException ioe)
        {
            Log.e("Debug", "error: " + ioe.getMessage(), ioe);
        }
        //------------------ read the SERVER RESPONSE
        try {
            inStream = new DataInputStream ( conn.getInputStream() );
            String str;
 
            while (( str = inStream.readLine()) != null)
            {
                Log.e("Debug","Server Response "+str);
            }
            inStream.close();
 
        }
        catch (IOException ioex){
            Log.e("Debug", "error: " + ioex.getMessage(), ioex);
        }
    }
}


Ошибка указывает сюда
Java
1
            dos = new DataOutputStream( conn.getOutputStream() );
Кто знает, куда копать?
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
13.09.2015, 20:00     Загрузка изображений на сервер #4
bako-95, я знаю!) Выкиньте все эти стримы, всю эту "гадость") возьмите apache http client и спокойно работайте)

Примеры, 1 2
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
13.09.2015, 22:01     Загрузка изображений на сервер #5
YuraAAA, ого, офигенный примерчик!
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
16.09.2015, 21:42     Загрузка изображений на сервер #6
YuraAAA, Пользуюсь первым примером, всё прекрасно. Но если вам не трудно, не могли бы описать переменную baos из строки

Java
1
multiPart.addPart("uploadedfile", new ByteArrayBody(baos.toByteArray(), "logo.png"));
Я просто не могу понять Uri или Bitmap в Array надо переводить?


Сейчас перемещаю его в AsyncTask
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
                    class RequestTask extends AsyncTask<String, String, String> {
 
        @Override
        protected String doInBackground(String... params) {
            try {
                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost(params[0]);
                MultipartEntity multiPart = new MultipartEntity();
                multiPart.addPart("ad_name", new StringBody(ad_name2));
                multiPart.addPart("new", new StringBody(new2));
                multiPart.addPart("to_what", new StringBody(to_what2));
                multiPart.addPart("uploadedfile", new ByteArrayBody(galleryPic.toByteArray(), "logo.png"));
                client.execute(post);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
Добавлено через 2 часа 14 минут
В общем мой больной мозг сотворил такую фигню:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ByteArrayOutputStream bayts = new ByteArrayOutputStream();
                bitmapResized.compress(Bitmap.CompressFormat.JPEG, 90, bayts);
                byte[] bayts2 = bayts.toByteArray();
                //создаем запрос на сервер
                DefaultHttpClient hc = new DefaultHttpClient();
                ResponseHandler<String> res = new BasicResponseHandler();
                //он у нас будет посылать post запрос
                HttpPost postMethod = new HttpPost("http://autostop.net76.net/login.php");
                //будем передавать 4 параметра
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                //передаем параметры из наших текстбоксов
                nameValuePairs.add(new BasicNameValuePair("ad_name", ad_name2));
                nameValuePairs.add(new BasicNameValuePair("new", new2));
                nameValuePairs.add(new BasicNameValuePair("to_what", to_what2));
                //Передаем изображение
                nameValuePairs.add((NameValuePair) new ByteArrayBody(bayts2, "uploadedfile"));
                //собераем их вместе и посылаем на сервер
                postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                //получаем ответ от сервера
                String response = hc.execute(postMethod, res);
При нажатий на кнопку отправить ничего не происходит. А влогах во вкладке инфо появляется вот это
I/System.out﹕ Exp=java.lang.NullPointerException

Кликните здесь для просмотра всего текста
32586-32659/com.ww4u.barter I/System.out﹕ Exp=java.lang.NullPointerException
09-17 00:32:08.515 105-291/? I/BufferQueue﹕ [unnamed-105-1228] BufferQueue
09-17 00:32:08.515 105-291/? I/BufferQueue﹕ [unnamed-105-1228] consumerConnect
09-17 00:32:08.515 105-291/? I/BufferQueue﹕ [unnamed-105-1228] setSynchronousMode: enabled=1
09-17 00:32:08.515 105-291/? I/BufferQueue﹕ [unnamed-105-1228] setDefaultBufferSize: w=1, h=1
09-17 00:32:08.525 105-291/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] setDefaultBufferSize: w=456, h=144
09-17 00:32:08.528 105-105/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] connect: api=1
09-17 00:32:08.529 105-105/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] setSynchronousMode: enabled=1
09-17 00:32:08.529 105-15190/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] setSynchronousMode: enabled=1
09-17 00:32:08.532 105-15190/? I/GraphicBuffer﹕ allocate buffer (w:480 h:144 f:5) err(0)
09-17 00:32:08.533 105-15190/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] createGraphicBuffer before(NULL) after(0x42a6c658, handle=0x42a6bde0, w=456, h=144, f=5)
09-17 00:32:08.556 105-18325/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] disconnect: api=1
09-17 00:32:08.556 105-18325/? I/SurfaceTexture﹕ [com.ww4u.barter/com.ww4u.barter.add] [virtual void android::SurfaceTexture::onBuffersReleased()] mCurrentTexture:-1, mCurrentBuf:0x0
09-17 00:32:08.556 105-18325/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] getReleasedBuffers: returning mask 0xffffffff
09-17 00:32:08.557 105-696/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] connect: api=2
09-17 00:32:08.557 105-696/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] setSynchronousMode: enabled=1
09-17 00:32:08.559 105-105/? I/GraphicBuffer﹕ allocate buffer (w:480 h:144 f:1) err(0)
09-17 00:32:08.559 105-105/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] createGraphicBuffer before(NULL) after(0x42a6c658, handle=0x42a6ccb8, w=456, h=144, f=1)
09-17 00:32:08.569 105-696/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] disconnect: api=2
09-17 00:32:08.575 105-696/? I/SurfaceTexture﹕ [com.ww4u.barter/com.ww4u.barter.add] [virtual void android::SurfaceTexture::onBuffersReleased()] mCurrentTexture:0, mCurrentBuf:0x42a6c658
09-17 00:32:08.576 105-696/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] getReleasedBuffers: returning mask 0xffffffff
09-17 00:32:08.582 372-402/? I/WindowManager﹕ Gaining focus: Window{4248d8e8 com.ww4u.barter/com.ww4u.barter.add paused=false}
09-17 00:32:08.582 372-402/? I/WindowManager﹕ Losing focus: Window{41baab20 com.ww4u.barter/com.ww4u.barter.add paused=false}
09-17 00:32:08.594 372-3668/? W/InputMethodManagerService﹕ Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@41b9eb68 attribute=null
09-17 00:32:08.644 131-131/? W/ADB_SERVICES﹕ create_local_service_socket() name=shell:cat /proc/32586/stat
09-17 00:32:08.646 903-903/? W/ADB_SERVICES﹕ adb: unable to open /proc/903/oom_adj
09-17 00:32:08.685 131-131/? W/ADB_SERVICES﹕ create_local_service_socket() name=shell:cat /proc/stat
09-17 00:32:08.686 904-904/? W/ADB_SERVICES﹕ adb: unable to open /proc/904/oom_adj
09-17 00:32:08.804 105-291/? I/SurfaceFlinger﹕ [SurfaceFlinger] frames:21, duration:1.011000, fps:20.768837
09-17 00:32:08.851 105-291/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] consumerDisconnect
09-17 00:32:08.851 105-291/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] ~BufferQueue


Добавлено через 2 минуты
если 16 строку закомментировать, то все работает нормально
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
21.09.2015, 21:45     Загрузка изображений на сервер #7
Использовал библиотеку com.github.alexbbb:android-upload-service:1.3.1
Все проблемы как рукой сняло
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
22.09.2015, 11:49     Загрузка изображений на сервер #8
Цитата Сообщение от YuraAAA Посмотреть сообщение
возьмите apache http client
Юра, ты чего?
"Гугл" ещё в 2010 году признала, что это устарело и годится обычно для версий < 2.3. Для остальных случаев рекомендуют как раз-таки HttpUrlConnection и, видимо, потоки. Сам недавно на них перешёл.
YuraAAA
22.09.2015, 12:12
  #9

Не по теме:

CoolMind, использовал apache года 2 назад так...) сейчас использую Retrofit/RxJava

CoolMind
22.09.2015, 12:50
  #10

Не по теме:

YuraAAA, о, неплохо. И как, нравится? Я тоже подумываю о переходе на сторонние библиотеки типа OkHTTP, Retrofit.

Паблито
22.09.2015, 12:56
  #11

Не по теме:

у меня на одном собеседовании спрашивали в том числе, работал ли я с Retrofit
а я никак не могу придумать задачу подходящую, что бы поиграться с этой библиотекой
в вакансиях через одну эта либа мелькает

YuraAAA
22.09.2015, 13:04
  #12

Не по теме:

Паблито, она действительно хороша. И, как будет желание, попробуйте retrofit + RxJava for android, они отлично работают в паре. Избавляют от ручного написания асинхронных тасок и вообще класс

androbro
313 / 273 / 51
Регистрация: 17.10.2014
Сообщений: 820
22.09.2015, 13:48     Загрузка изображений на сервер #13
YuraAAA,

Не по теме:

а как там дела с лямбдами обстоят? читал что RxJava хороша с применением лямбда выражений...подключаете retrolambda или и без них все отлично?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2015, 13:49     Загрузка изображений на сервер
Еще ссылки по теме:

Android Кэширование изображений
Динамическое отображение изображений Android
Загрузка изображений в RecyclerView Android
Загрузка изображений с RSS ленты Android
Загрузка фото из галереи на сервер Android

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

Или воспользуйтесь поиском по форуму:
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
22.09.2015, 13:49     Загрузка изображений на сервер #14
androbro,

Не по теме:

и без них тоже хорошо

Yandex
Объявления
22.09.2015, 13:49     Загрузка изображений на сервер
Ответ Создать тему
Опции темы

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