powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Битые картинки при аплоаде файлов по http из Android
25 сообщений из 49, страница 1 из 2
Битые картинки при аплоаде файлов по http из Android
    #37102394
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имеем девайс с android 2.2
аплоадим на сервер картинки используя следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
HttpPostMultipartClient httpClient =  new  HttpPostMultipartClient(EXPORT_PHOTOS_URI);
httpClient.addParam("username", credentials.getUsername());
httpClient.addParam("password", credentials.getPassword());
httpClient.addParam("locations_id", Integer.toString(entity .getLocation()));
				
httpClient.addFile("image", AndorraApplication.getPhotosPath() + "/" + entity.getFileName());

 try  {
	String responseStr = httpClient.execute();
	 try  {
		 final  JSONObject resultObj =  new  JSONObject(responseStr);
		 if  (resultObj.getBoolean("result")) {
			// mark these itms as exported
			photoReader.markAsExported(entity.getId());
		}
	}  catch  (JSONException e) {
		Log.e(TAG, "JSON Exception: " + e.getMessage(), e);
	}
}  catch  (IOException e) {
	Log.e(TAG,
			"exportData: sending photo failed: "
					+ e.getMessage(), e);
}


класс аплоада тут:

Код: plaintext
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.
 public   class  HttpPostMultipartClient {
........
 public  String execute()  throws  IOException {
    String lineEnd = "\r\n";
    String twoHyphens = "--";
    String boundary = "*****MultipartBoundary";

     try  {
        URL url =  new  URL(mUri);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.setUseCaches(false);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Connection", "Keep-Alive");
        conn.setRequestProperty("Content-Type",
                "multipart/form-data; boundary=" + boundary);

        // timeouts
        conn.setConnectTimeout(CONNECT_TIMEOUT);
        conn.setReadTimeout(READ_TIMEOUT);

        Log.d(TAG, "Opening connectionStream");
        DataOutputStream dos =  new  DataOutputStream(conn.getOutputStream());

        Log.d(TAG, "Adding params");
         for  (NameValuePair param : mParams) {
            dos.writeBytes(twoHyphens + boundary + lineEnd);
            dos.writeBytes("Content-Disposition: post-data; name="
                    + param.getName() + lineEnd);
            dos.writeBytes(lineEnd);
            dos.writeBytes(param.getValue());
            dos.writeBytes(lineEnd);
        }

        File file;
        Log.d(TAG, "Adding files");
         for  (NameValuePair param : mFiles) {
            file =  new  File(param.getValue());
             if  (file.exists()) {
                dos.writeBytes(twoHyphens + boundary + lineEnd);
                dos.writeBytes("Content-Disposition: post-data; name="
                        + param.getName() + "; filename=" + file.getName()
                        + lineEnd);
                dos.writeBytes("Content-Type: application/octet-stream" + lineEnd);
                dos.writeBytes("Content-Transfer-Encoding: binary" + lineEnd);
                dos.writeBytes(lineEnd);

                Log.d(TAG, "Opening fileInputStream");
                FileInputStream fileStream =  new  FileInputStream(file);
                 try  {
                     int  bytesAvailable;

                     while ((bytesAvailable = fileStream.available()) >  0 )
                    {
                         int  bufferSize = Math.min(bytesAvailable,  4096 );
                         byte [] buffer =  new   byte [bufferSize];
                         int  bytesRead = fileStream.read(buffer,  0 , bufferSize);
                        dos.write(buffer,  0 , bytesRead);
                    }
                    dos.writeBytes(lineEnd);
                }  finally  {
                    fileStream.close();
                }
                Log.d(TAG, "Closing fileINputStream");
            }
        }

        // very important - we specify the end of the multipart block
        dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

        dos.flush();
        dos.close();

        // getting response
         if  (conn.getResponseCode() == HttpStatus.SC_OK) {
            BufferedInputStream bis =  new  BufferedInputStream(conn.getInputStream());
             try  {
                 ByteArrayBuffer baf =  new  ByteArrayBuffer( 50 );
                  int  read =  0 ;
                  int  bufSize =  512 ;
                  byte [] buffer =  new   byte [bufSize];
                  while (true){
                      read = bis.read(buffer);
                       if (read==- 1 ){
                            break ;
                      }
                      baf.append(buffer,  0 , read);
                 }
                 Log.d(TAG, "Connection successful - returning result");
                  return   new  String(baf.toByteArray(), "UTF-8");
            }  finally  {
                bis.close();
            }
        }  else  {
            Log.d(TAG, "Return code is " + Integer.toString(conn.getResponseCode()));
             throw   new  IOException("Return code is " + Integer.toString(conn.getResponseCode()));
        }

    }  catch  (MalformedURLException e) {
        Log.e(TAG, "Exception: " + e.getMessage(), e);
         throw   new  IOException("aaa");
    }  catch  (IOException e) {
        Log.e(TAG, "Exception: " + e.getMessage(), e);
         throw   new  IOException();
    }
}
}

в результате в большинстве случаев получаем на выходе битую картинку
пример:
картинка в оригинале - взята с sdcard
то, что приходит на сервер

на сервере тривиальнейший скрипт: <?php move_uploaded_file(blablabla ?>

размер обоих файлов одинаковый. при сравнении оказывается, что какие-то блоки (в данном случае один, но у клиентов вообще вся картинка в хлам) бьются. причем блоки разной длины бывают
------------------------------------------------------------------------

00051330 | 49 69 11 4B 9D E6 | 00051330 | DA BB 10 70 DC 77 |
00051338 | 2D B9 1B B9 E4 81 5A E6 | 00051338 | AC 20 C7 90 7E B4 33 80 |
00051340 | D4 14 B0 F4 EA 3D D1 E9 | 00051340 | 31 9A B8 C2 29 83 66 9C |
00051348 | 61 9D E3 38 F7 36 DE 63 | 00051348 | 9A 84 8E 73 9A 8D B5 29 |
00051350 | 25 9D 9D C4 64 C3 23 AA | 00051350 | 18 60 1C 0F 7A CF 33 01 |
00051358 | 4A EB 08 C3 97 7C 8C 36 | 00051358 | D4 F0 7A D3 24 BA 85 71 |
00051360 | 73 F5 E3 15 14 5B BC C1 | 00051360 | F3 0A 76 8A D6 C4 36 5E |
00051368 | B9 A4 49 06 71 1B 11 87 | 00051368 | 7B B9 5F 20 E3 A5 46 F2 |
00051370 | 39 E7 76 7B 8F 5F | 00051370 | B8 1D 4E 6B 36 6D |
------------------------------------------------------------------------

причем картинка может и нормально дойти, а может и побиться по дороге


пробовал делать аплоад через apache httpmime 4.1 - результат тот же.
пробовал сменить сервер - 0 эмоций. то же самое

да. вся эта процедура вызывается из отдельного треда. но в 1 момент времени только 1 тред работает. по логкату смотрел - все путем.

в чем может быть проблема? сидел, размышлял. может быть проблема где-то в stream'ах и я что-то не то делаю?
в http ведь нет коррекции ошибок, за все отвечает tcp и он просто не пропустит битый блок данных...

спасибо заранее за ответы. надеюсь подскажете как решить проблему, а то бьюсь третий день уже. только караул еще не кричу... =)
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37102732
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
решил проверить, может FileInputStream глючит как-то
изменил немного код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
			FileOutputStream fileOutStream =  new  FileOutputStream(AndorraApplication.getPhotosPath() + "/orig_" +file.getName() );
			DataOutputStream dataOutStream =  new  DataOutputStream(fileOutStream);
					

			 try  {
		                 int  bytesAvailable;

		                 while ((bytesAvailable = fileStream.available()) >  0 )
		                {
		                     int  bufferSize = Math.min(bytesAvailable,  4096 );
		                     byte [] buffer =  new   byte [bufferSize];
		                     int  bytesRead = fileStream.read(buffer,  0 , bufferSize);
		                    dos.write(buffer,  0 , bytesRead);
		                    dataOutStream.write(buffer,  0 , bytesRead);
		                }
				dos.writeBytes(lineEnd);
			}  finally  {
				fileStream.close();
				dataOutStream.close();
			}

в результате, когда картинка на сервере аплоадится битая, файл сохраняется на sd идеально..
это какой-то баг в HttpURLConnection или у меня совсем кривые руки? =)

люди, SOS, ПОМОГИТЕ! =)
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37102771
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Методы работы с IO у вас в стиле "доку не читал, догадался по названиям методов"
перепишите чтение и запись более традиционным способом. Посмотрите примеры
http://www.exampledepot.com/egs/java.io/CopyFile.html
http://www.exampledepot.com/egs/java.io/File2ByteArray.html
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37102817
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

пусть так, но сути это не меняет.
размер на сервере - идентичный. но данные внутри покоцаные в той или иной степени.
если вы мне подскажете каким образом порча данных при передаче по http может быть вызвана "не совсем корректным с точки зрения guru" написанием кода - буду очень благодарен

на предмет "перепишите все" - бесполезно. в оригинале использовалась апачевская httpclient
и конструкция была предельно простая:
reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("image", new FileBody(new File(...)), "image/jpeg"));
и далее через defaulthttpclient

результат был тот же. что-то мне подсказывает, что в апачевской либе работа с IO организована правильно...
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37102869
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex cесли вы мне подскажете каким образом порча данных при передаче по http может быть вызвана "не совсем корректным с точки зрения guru" написанием кода - буду очень благодарен

Опыт подсказывает что все проблемы с порчей данных вызваны неаккуратностью работы с IO.
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37102882
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex cна предмет "перепишите все" - бесполезно. в оригинале использовалась апачевская httpclient
результат был тот же. что-то мне подсказывает, что в апачевской либе работа с IO организована правильно...
Зачем вы тогда код приводите?
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37102883
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

ну вот смотрите
в оригинале это было примерно так:
Код: plaintext
1.
2.
3.
4.
MultipartEntity reqEntity =  new  MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

reqEntity.addPart("image",  new  FileBody( new  File(AndorraApplication.getPhotosPath() + "/" + entity.getFileName()), "image/jpeg"));
resp = NetworkUtils.sendHttpRequestMultipart(EXPORT_PHOTOS_URI, reqEntity);

и класс собсно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 public   class  NetworkUtils {
     public   static   final   int  REGISTRATION_TIMEOUT =  3  *  1000 ; 
     public   static   final   int  WAIT_TIMEOUT =  5  *  1000 ;

     public   static  HttpResponse sendHttpRequestMultipart(String uri, MultipartEntity entity) {
        HttpClient mHttpClient =  new  DefaultHttpClient();
         final  HttpParams params = mHttpClient.getParams();
        HttpConnectionParams.setConnectionTimeout(params, REGISTRATION_TIMEOUT);
        HttpConnectionParams.setSoTimeout(params, WAIT_TIMEOUT);
        ConnManagerParams.setTimeout(params, WAIT_TIMEOUT);

        HttpPost post =  new  HttpPost(uri);
        post.addHeader(entity.getContentType());
        post.setEntity(entity);
        HttpResponse resp = mHttpClient.execute(post);
         return  resp;
    }
}

а вот потом уже начались танцы с бубнами и пробование всего, чего угодно.
тут все достаточно гладко, на мой дилетантский взгляд...
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37102902
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczЗачем вы тогда код приводите?
вначале думал, что проблема в библиотеке.... а тут более развернутый алгоритм - больше поле для "фантазий" =)

вообще, мне начинает казаться, что проблема кроется в froyo, т.е. у некоторых программ возникали проблемы подобного рода.. к сожалению, никаких workaround кроме как передавать checksum и в случае несоответствия отправлять заново, я не нашел. но в данном случае это не вариант, потому что на конечных устройствах битыми приходят 95% изображений :( т.е. это бесполезная трата трафика :(

хотя вариант с кривыми руками имеет право на существование. они действительно пока не очень прямые, к сожалению...
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37102919
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37102953
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что если попробовать
entity.setChunked(true);
для аплоада мелкими порциями?
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37103473
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz http://blog.pixelpipe.com/2010/10/22/having-corruption-issues-with-your-android-2-2-media-uploads/
да. про это я читал. но никаких решений проблемы в нете, к сожалению, не нашел. возможно плохо искал.
но что-то мне подсказывает, что здесь не совсем мой случай. потому что
1) картинки берутся просто как файл с файловой системы без участия mediastore
2) размер файла-то как раз нормальный. а вот внутри - ужас :(

видел посты про просто бьющиеся картинки, но там как решение - тупо проверять чексум файла. но тут не вариант - почти все картинки битые, так что будет отправлять до бесконечности, пока трафик не кончится :(
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37103499
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczЧто если попробовать
entity.setChunked(true);
для аплоада мелкими порциями?
спасибо за идею. хоть что-то.. пойду документацию читать и пробовать.

кстати, забыл сказать, что с указанным куском кода тоже была проблема, решить которую у меня ну вообще не получилось :(

в связи с тем, что качество связи там, где эта программа должна использоваться, отвратительное, проводил тест:
начинается аплоад картинки, в это время отключаем 3g. и висим =) таймаут срабатывает через 17-20 минут. хотя все таймауты минимальные.
причем, если, например, связи нет изначально ДО того, как началась отправка, то таймаут срабатывает очень четко. т.е. даже 3g поднят, но связь плохая, 3 секунды - и sockettimeoutexception срабатывает.

как только не пробовал... и как в коде у меня приведено. и наоборот, сначала создавая параметры и передавая их в конструктор httpclient'а.. и connectionmanager пробовал создавать и ему уже указывать... как об стенку горох )
не везет мне как-то с аплоадом этим )
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37103502
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex cвидел посты про просто бьющиеся картинки, но там как решение - тупо проверять чексум файла. но тут не вариант - почти все картинки битые, так что будет отправлять до бесконечности, пока трафик не кончится :(
Существуют восстанавливающие алгоритмы. Но тут, судя по тому что целые куски в хлам, они могут не помочь.
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37103692
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczСуществуют восстанавливающие алгоритмы. Но тут, судя по тому что целые куски в хлам, они могут не помочь.
да. скорее всего это не вариант. я вверху привел результат compare двух файлов... причем, это самый хороший вариант. на клиентских девайсах картинки вообще не видно. одни полоски. =)

кстати, к сожалению, не нашел ничего связанного с setchunked у multipartentity

вот думаю, может быть вместо content-transfer-encoding: binary попробовать через base64 кодировать. потму что текст-то врде нормально доходит....
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37103762
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема только на железках возникает или на эмуляторе тоже?
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37103825
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема никак не связана с конкурентным доступом? Т.е. ошибка проявляется даже если никто другой ничего на сервер не аплоадит?
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37103897
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот на эмуляторе не пробовал, если честно... картинки с камеры берутся, записываются в файл и по мере надобности отправляются, а т.к. камеры на эмуляторе нет, то тестить там сложно. однако попробую как-то в эмулятор большую картинку запихнуть
на железках = да проявляются. я на hd2 тестирую, клиентские - galaxy tab... т.е. железо, подозреваю, ни при чем.

попробовал в base64.. был просто в шоке =)
в общем передалал код вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
		 try  {
				Base64OutputStream b64OutStream =  new  Base64OutputStream(dos, Base64.CRLF | Base64.NO_CLOSE);

				 int  bytesAvailable;

		                 while ((bytesAvailable = fileStream.available()) >  0 )
		                {
		                     int  bufferSize = Math.min(bytesAvailable,  4096 );
		                     byte [] buffer =  new   byte [bufferSize];
		                     int  bytesRead = fileStream.read(buffer,  0 , bufferSize);
		                    b64OutStream.write(buffer,  0 , bytesRead);
		                }
				b64OutStream.close();
		                dos.writeBytes(lineEnd);
			}  finally  {
				fileStream.close();
			}

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

в результате теста 1 из 5 аплоадов одной и той же картинки был неправильный. причем так забавно.. идет блок base64 (я raw post data сохраняю) и поседине вот такой корявый кусок выскакивает.
=================
g9jmI8frThqfw+bga5/wIxnB+nNfBM3xX1+DazyRR+ZwQzfyp7/FvXIcLKFBJAQ7+GrZ5TLu/wAD
ofsex95vqXw+UZPiFEHq0ZxR/aPgEYI8QxsR2EbcV8GD4ua2kywmFBIefLZxk++KcfjHrQk8maKO
ObGQvmDcw/Kl/ZE+7/AP3N9UfeX9o+AWIH/CQJuP8JRs1I934GiA3+J4GQcHrX9W2VtD8h1WpdtrxZRg49xU6tG2MtxgHrxWVFnzGAPzHGPp
U3AkAZsBvvClKs6mV+zi5Sk7L0E/YRi5M+s/tvgVeT4k
iwePuNT1uPBjZI8QQ4HqjD+lfHHxZ1XxN8H/ABlP4ans9+msu/TrtjzKoGSDnqRXMT/GDVICx8rK
p/EzYU/WlHKnNKUZOz9CYqhKKlY+7xfeBmAP/CRREHuEanrceCWyV8RQtjqAjZH6V8Dw/G+9uiy2
9sjSAFgd3f8Awr6E+AnhHwb8cLCeS9ku4NWitftAktiPLUehB71jVy72MHUnJpfImbw8Ue6GfwcM
=========================

ну и файл как раз отличается на эти несколько десятков байт.

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

получилось вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 try  {
	Base64OutputStream b64OutStream =  new  Base64OutputStream(dos, Base64.CRLF | Base64.NO_CLOSE);

	 byte [] buf =  new   byte [ 1024 ];
	 int  len;
	 while  ((len = fileStream.read(buf)) >  0 ) {
		b64OutStream.write(buf,  0 , len);
	}
	b64OutStream.close();
	dos.writeBytes(lineEnd);
}  finally  {
	fileStream.close();
}

первые 3 аплоада были удачными.. но каково же было мое удивление, когда я в 2х следующих посередине base64 данных обнаружил следующее:
========
UX5W5yTSlMH5jk9qVTxwO+D+FS9BpJDMDABB4PIp6IhBy2c0nysBk5OTyKQbUcdwf1q7alpa6j0C
ouRycdRTCmD3p7KGX274pBKyMVBOAPxqWvvHtoMторым был раньше. Оно тебе
надо?<br>
Если тебя всё устраивает - л3jHjv60bsyeu4Ruozg/N1wKRjkkZzjmnKpQ7m7cULsJPXnn
Aot5Fq17CeVyu0445zTtrEjnjvg03aX6HAz27Uske0fN17dqpRutRu3QkjIySoGV9aZyrE544yaI
8EA9M5zTthPHUkcUuVERa6jI13N0wvvT3wxIJxkY+tIgk25ONw6U4oeuSQOtGrdwd0IIVUdQfWkY
==========

а в другом файле вот это:
=========
UEdxCwJ5GO5poGAMHnPenmN92QQVxwKaAVXc3JHFKzZSeou4EkZPFOYGNWBGT2PtTVChQ3XNIhY5
570rdHsK3cVGIHsRzR06U7Yec8ECm4LEFjwO3pQ9GAqnnJHTr71KMkKQOD1pNy/MOoahSQvXjp9a
tpDWo1kLsx7DFPEKMpZeKcUour sex partners.
* Stop premature ejaculations.

http://longpeni28Y4xxUgUKCPXrUbjef93mrcdLtGa+IkYOWwTwRmlALfw8Dg+1NjG7kmpIsKCDw
M5xUW5Qeuwm3jGMc0gwBkD606MYPqM5px24PHGaXN0K5WxoOAR60SIGHrmkMeGGOcetOYFecYx1q
=========

при этом на этом телефоне вообще ничего кроме этого приложения не запускалось

может у меня на компутере вирус какой-то, который внедряет свой код в java файлы при компиляции? =)
я вообще теперь не знаю чего думать )
полный дурдом в общем )

что касается доступа к серверу. на выходе стоит тупейший php скрипт, который сохраняет картинку на диск под уникальным именем. а в данный момент я вообще просто сохраняю данные POST в текстовый файл
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37103983
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смените сервер. Бывают такие вирусы, которые инжектят спам в http трафик.
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37104000
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ээээ. вирус на centos у крупной хостинговой компании?
я, кстати, пробовал менять сервер на другой (уже другая хостинговая компания). результат был тот же. я писал, по-моему, об этом в самом начале. на этом же сервере хостятся куча других наших сайтов и с аплоадом картинок из браузера, через flash, да и просто передача данных с форм, проходит на ура.. проблема именно в стыковке андроид приложения и сервера :(
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37104059
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем судя по всему ,проблему на форуме решить не представляется возможным, т.к. все, кого ни спрашиваю, в шоке от такой ерунды. )
буду, наверное, аплоад отдельно от программы тестировать. напишу прогу, которая отправляет 1 и ту же картинку постоянно..
и если заработает, значит вирус - это я. и где-то намудрил. хотя как так можно намудрить - не понимаю )

спасибо, что потратили на меня свое время )
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37104188
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем резюмируя
для чистоты эксперимента сделал следующую прогу. привожу весь текст
Код: plaintext
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.
 package  com.android.uploadtest;

 import  java.io.File;

 import  org.apache.http.HttpResponse;
 import  org.apache.http.entity.mime.HttpMultipartMode;
 import  org.apache.http.entity.mime.MultipartEntity;
 import  org.apache.http.entity.mime.content.FileBody;

 import  android.app.Activity;
 import  android.app.AlertDialog;
 import  android.content.DialogInterface;
 import  android.os.Bundle;
 import  android.os.Environment;
 import  android.view.View;

 public   class  UploadTest  extends  Activity {
	 private   final   static  String TAG = "UploadTest";

	/** Called when the activity is first created. */
	@Override
	 public   void  onCreate(Bundle savedInstanceState) {
		 super .onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}

	 private   void  uploadImage() {
		String imagePath = Environment.getExternalStorageDirectory()
				+ "/Andorra/Images/748.jpg";
		String exportUrl = "http://доментута/pda/export_photos.php";

		String responseStr = "";
//		HttpPostMultipartClient httpClient = new HttpPostMultipartClient(
//				exportUrl);
//
//		httpClient.addFile("image", imagePath);
//
//		try {
//			responseStr = httpClient.execute();
//		} catch (Exception e) {
//			Log.e(TAG, e.getMessage(), e);
//		}

		MultipartEntity reqEntity =  new  MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

		reqEntity.addPart("image",  new  FileBody( new  File(imagePath), "image/jpeg"));
		HttpResponse resp = NetworkUtils.sendHttpRequestMultipart(exportUrl, reqEntity);

		 new  AlertDialog.Builder( this ).setMessage(responseStr)
				.setTitle("Finished")
				.setPositiveButton("Ok",  new  DialogInterface.OnClickListener() {
					 public   void  onClick(DialogInterface dialog,  int  whichButton) {
					}
				}).show();

	}
	
	 public   void  btn1_onClickHandler(View v) {
		uploadImage();
	}
}

тут уж вообще негде мудрить, т.к. это весь листинг программы.

причем пробовал и с httpcomponents и напрямую работая с httpconnection (строчки закомменченные)

поменял сервер на вообще другой..


итог. с httpconnection - из 10 аплоадов 2 битых
httpcomponents - из 13 аплоадов 4 битых

я сдаюсь )
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37104209
alex c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл сказал. используемое соединение - 3g от мегафона. через wifi нет возможности попробовать, к сожалению...
сейчас буду пытаться файл загрузить на эмулятор и тестировать на эмуляторе под разными версиями android'а
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37104215
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если посылать файлы размером в 1-2Кб, то они тоже могут портиться?
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37104246
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex couRycdRTCmD3p7KGX274pBKyMVBOAPxqWvvHtoMторым был раньше. Оно тебе
надо?<br>

Гугл подсказывает что кто-то в это время читал
"10 причин не идти на Дэвида Айка"
...
Рейтинг: 0 / 0
Битые картинки при аплоаде файлов по http из Android
    #37104300
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня аналогичная проблема возникла, но только из iPhone. Пока её также не решил, если найду решение - отпишусь в этой теме.
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / Android [игнор отключен] [закрыт для гостей] / Битые картинки при аплоаде файлов по http из Android
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]