歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android 上傳圖片到服務器

Android 上傳圖片到服務器的實現,界面很簡單,點擊 【選擇圖片】,從圖庫裡選擇圖片,顯示到下面的imageview裡,點擊上傳,就會上傳到指定的服務器。

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="選擇圖片"
    android:id="@+id/selectImage"
    />
    <Button 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="上傳圖片"
    android:id="@+id/uploadImage"
    />
    <ImageView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView"
    />
</LinearLayout>

Upload Activity:

public class Upload extends Activity implements OnClickListener {
 private static String requestURL = "http://192.168.1.212:8011/pd/upload/fileUpload.do";
 private Button selectImage, uploadImage;
 private ImageView imageView;

 private String picPath = null;

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

  selectImage = (Button) this.findViewById(R.id.selectImage);
  uploadImage = (Button) this.findViewById(R.id.uploadImage);
  selectImage.setOnClickListener(this);
  uploadImage.setOnClickListener(this);

  imageView = (ImageView) this.findViewById(R.id.imageView);

 }

 @Override
 public void onClick(View v) {
  switch (v.getId()) {
  case R.id.selectImage:
   /***
    * 這個是調用android內置的intent,來過濾圖片文件 ,同時也可以過濾其他的
    */
   Intent intent = new Intent();
   intent.setType("image/*");
   intent.setAction(Intent.ACTION_GET_CONTENT);
   startActivityForResult(intent, 1);
   break;
  case R.id.uploadImage:
   if (picPath == null) {

    Toast.makeText(Upload.this, "請選擇圖片!", 1000).show();
   } else {
    final File file = new File(picPath);

    if (file != null) {
     String request = UploadUtil.uploadFile(file, requestURL);
     uploadImage.setText(request);
    }
   }
   break;
  default:
   break;
  }
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (resultCode == Activity.RESULT_OK) {
   /**
    * 當選擇的圖片不為空的話,在獲取到圖片的途徑
    */
   Uri uri = data.getData();
   Log.e(TAG, "uri = " + uri);
   try {
    String[] pojo = { MediaStore.Images.Media.DATA };

    Cursor cursor = managedQuery(uri, pojo, null, null, null);
    if (cursor != null) {
     ContentResolver cr = this.getContentResolver();
     int colunm_index = cursor
       .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
     cursor.moveToFirst();
     String path = cursor.getString(colunm_index);
     /***
      * 這裡加這樣一個判斷主要是為了第三方的軟件選擇,比如:使用第三方的文件管理器的話,你選擇的文件就不一定是圖片了,
      * 這樣的話,我們判斷文件的後綴名 如果是圖片格式的話,那麼才可以
      */
     if (path.endsWith("jpg") || path.endsWith("png")) {
      picPath = path;
      Bitmap bitmap = BitmapFactory.decodeStream(cr
        .openInputStream(uri));
      imageView.setImageBitmap(bitmap);
     } else {
      alert();
     }
    } else {
     alert();
    }

   } catch (Exception e) {
   }
  }

  super.onActivityResult(requestCode, resultCode, data);
 }

 private void alert() {
  Dialog dialog = new AlertDialog.Builder(this).setTitle("提示")
    .setMessage("您選擇的不是有效的圖片")
    .setPositiveButton("確定", new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int which) {
      picPath = null;
     }
    }).create();
  dialog.show();
 }

}

Copyright © Linux教程網 All Rights Reserved