ello.
i'm experiencing a problem when uploading images from my android
application to remote server (apache with php).

devices are: htc hd2 and samsung galaxy tab. all with android 2.2

the application itself is very simple:
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://domainname.here/pda/export_photos.php";;

                String responseStr = "";

                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();
        }
}

so it's as simple as it can be.
the problem is that the uploaded image is corrupted.
the file size is same. but content can differ. sometimes it uploads
ok. sometimes it is broken..
example:
original image; http://pixelbirthcloud.com/corrupted_images/1_orig.jpg
uplaoded image: http://pixelbirthcloud.com/corrupted_images/1_corrupted.jpg

the binary diff says:
------------------------------------------------------------------------

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 |
------------------------------------------------------------------------

internet connection is 3g in my case and slow wifi in client's case.
for client the images are 90% corrupted (cannot see anything) and it
happens like 98% of the time.

after some time i tried to make the upload using HttpURLConnection
class and had same results.
then tried to encode files with base64 but even in this case the
base64 text is received corrupted.

also tries to set transfer to chunk mode:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setChunkedStreamingMode(8192);
but the result was same.. most images are corrupt.

can you please help me? i am almost crying =) fighting with this for a
week now.. thank you in  advance

btw. tried it with emulator via normal network and it works ok...

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to