Upload immagine su server remoto

  • Creatore Discussione Creatore Discussione kalimett
  • Data di inizio Data di inizio

kalimett

Utente Attivo
29 Apr 2011
39
0
0
Ciao a tutti.

Sto provando ad eseguire l'upload di una fotografia su un server remoto tramite un webservice in asp net.
Il problema in questa classe java è che anche con la fotografia selezionata del form di invio dati, mi viene sempre restituito l'alert "Please select image".

Dove sto sbagliando?
Grazie

Ecco il mio codice:
MainActivity.java

Codice:
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.ProgressDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.database.Cursor;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.provider.MediaStore;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
            ImageView viewImage;
            Button b, upload;
            private Bitmap bitmap;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);
    
                    b = (Button) findViewById(R.id.btnSelectPhoto);
                    viewImage = (ImageView) findViewById(R.id.viewImage);
                    upload = (Button) findViewById(R.id.button1);
    
                    b.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                    selectImage();
                            }
                    });
    
                    upload.setOnClickListener(new View.OnClickListener() {
    
                            public void onClick(View v) {
    
                                    if (bitmap == null) {
                                            Toast.makeText(getApplicationContext(),
                                                            "Please select image", Toast.LENGTH_SHORT).show();
                                    } else {
                                            ProgressDialog.show(MainActivity.this, "Uploading"
                                                            + bitmap, "Please wait...", true);
    
                                    }
                            }
                    });
            }
    
            private void selectImage() {
    
                    final CharSequence[] options = { "Take Photo", "Choose from Gallery",
                                    "Cancel" };
    
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setTitle("Add Photo!");
                    builder.setItems(options, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int item) {
                                    if (options[item].equals("Take Photo")) {
                                            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                            File f = new File(android.os.Environment
                                                            .getExternalStorageDirectory(), "temp.jpg");
                                            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
                                            startActivityForResult(intent, 1);
                                    } else if (options[item].equals("Choose from Gallery")) {
                                            Intent intent = new Intent(
                                                            Intent.ACTION_PICK,
                                                            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                                            startActivityForResult(intent, 2);
    
                                    } else if (options[item].equals("Cancel")) {
                                            dialog.dismiss();
                                    }
                            }
                    });
                    builder.show();
            }
    
            @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                    super.onActivityResult(requestCode, resultCode, data);
                    if (resultCode == RESULT_OK) {
                            if (requestCode == 1) {
                                    File f = new File(Environment.getExternalStorageDirectory()
                                                    .toString());
                                    for (File temp : f.listFiles()) {
                                            if (temp.getName().equals("temp.jpg")) {
                                                    f = temp;
                                                    break;
                                            }
                                    }
                                    try {
                                            BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
    
                                            bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(),
                                                            bitmapOptions);
    
                                            viewImage.setImageBitmap(bitmap);
    
                                            String path = android.os.Environment
                                                            .getExternalStorageDirectory()
                                                            + File.separator
                                                            + "Phoenix" + File.separator + "default";
                                            f.delete();
                                            OutputStream outFile = null;
                                            File file = new File(path, String.valueOf(System
                                                            .currentTimeMillis()) + ".jpg");
                                            try {
                                                    outFile = new FileOutputStream(file);
                                                    bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile);
                                                    outFile.flush();
                                                    outFile.close();
                                            } catch (FileNotFoundException e) {
                                                    e.printStackTrace();
                                            } catch (IOException e) {
                                                    e.printStackTrace();
                                            } catch (Exception e) {
                                                    e.printStackTrace();
                                            }
                                    } catch (Exception e) {
                                            e.printStackTrace();
                                    }
                            } else if (requestCode == 2) {
    
                                    Uri selectedImage = data.getData();
                                    String[] filePath = { MediaStore.Images.Media.DATA };
                                    Cursor c = getContentResolver().query(selectedImage, filePath,
                                                    null, null, null);
                                    c.moveToFirst();
                                    int columnIndex = c.getColumnIndex(filePath[0]);
                                    String picturePath = c.getString(columnIndex);
                                    c.close();
                                    Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
                                    Log.w("path of image from gallery......******************.........",
                                                    picturePath + "");
                                    viewImage.setImageBitmap(thumbnail);
                            }
                    }
            }
    }
 
Ciao a tutti.

Sto provando ad eseguire l'upload di una fotografia su un server remoto tramite un webservice in asp net.
Il problema in questa classe java è che anche con la fotografia selezionata del form di invio dati, mi viene sempre restituito l'alert "Please select image".

Dove sto sbagliando?
Grazie

Ecco il mio codice:
MainActivity.java

Codice:
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.ProgressDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.database.Cursor;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.provider.MediaStore;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
            ImageView viewImage;
            Button b, upload;
            private Bitmap bitmap;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);
    
                    b = (Button) findViewById(R.id.btnSelectPhoto);
                    viewImage = (ImageView) findViewById(R.id.viewImage);
                    upload = (Button) findViewById(R.id.button1);
    
                    b.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                    selectImage();
                            }
                    });
    
                    upload.setOnClickListener(new View.OnClickListener() {
    
                            public void onClick(View v) {
    
                                    if (bitmap == null) {
                                            Toast.makeText(getApplicationContext(),
                                                            "Please select image", Toast.LENGTH_SHORT).show();
                                    } else {
                                            ProgressDialog.show(MainActivity.this, "Uploading"
                                                            + bitmap, "Please wait...", true);
    
                                    }
                            }
                    });
            }
    
            private void selectImage() {
    
                    final CharSequence[] options = { "Take Photo", "Choose from Gallery",
                                    "Cancel" };
    
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setTitle("Add Photo!");
                    builder.setItems(options, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int item) {
                                    if (options[item].equals("Take Photo")) {
                                            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                            File f = new File(android.os.Environment
                                                            .getExternalStorageDirectory(), "temp.jpg");
                                            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
                                            startActivityForResult(intent, 1);
                                    } else if (options[item].equals("Choose from Gallery")) {
                                            Intent intent = new Intent(
                                                            Intent.ACTION_PICK,
                                                            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                                            startActivityForResult(intent, 2);
    
                                    } else if (options[item].equals("Cancel")) {
                                            dialog.dismiss();
                                    }
                            }
                    });
                    builder.show();
            }
    
            @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                    super.onActivityResult(requestCode, resultCode, data);
                    if (resultCode == RESULT_OK) {
                            if (requestCode == 1) {
                                    File f = new File(Environment.getExternalStorageDirectory()
                                                    .toString());
                                    for (File temp : f.listFiles()) {
                                            if (temp.getName().equals("temp.jpg")) {
                                                    f = temp;
                                                    break;
                                            }
                                    }
                                    try {
                                            BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
    
                                            bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(),
                                                            bitmapOptions);
    
                                            viewImage.setImageBitmap(bitmap);
    
                                            String path = android.os.Environment
                                                            .getExternalStorageDirectory()
                                                            + File.separator
                                                            + "Phoenix" + File.separator + "default";
                                            f.delete();
                                            OutputStream outFile = null;
                                            File file = new File(path, String.valueOf(System
                                                            .currentTimeMillis()) + ".jpg");
                                            try {
                                                    outFile = new FileOutputStream(file);
                                                    bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile);
                                                    outFile.flush();
                                                    outFile.close();
                                            } catch (FileNotFoundException e) {
                                                    e.printStackTrace();
                                            } catch (IOException e) {
                                                    e.printStackTrace();
                                            } catch (Exception e) {
                                                    e.printStackTrace();
                                            }
                                    } catch (Exception e) {
                                            e.printStackTrace();
                                    }
                            } else if (requestCode == 2) {
    
                                    Uri selectedImage = data.getData();
                                    String[] filePath = { MediaStore.Images.Media.DATA };
                                    Cursor c = getContentResolver().query(selectedImage, filePath,
                                                    null, null, null);
                                    c.moveToFirst();
                                    int columnIndex = c.getColumnIndex(filePath[0]);
                                    String picturePath = c.getString(columnIndex);
                                    c.close();
                                    Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
                                    Log.w("path of image from gallery......******************.........",
                                                    picturePath + "");
                                    viewImage.setImageBitmap(thumbnail);
                            }
                    }
            }
    }

Ciao,
molto probabilmente sbagli il modo di ritornare la foto scattata. Dovresti fare un debug impostando uno watch nel requestCode e nella variabile bitmap.
 

Discussioni simili