Android_本地上传照片文件

 

一.知识点

      1.遍历SD卡中某一路径下指定类型的图片

      2.上传图片

二.代码解析
public class LocationPhoto extends Activity implements Runnable {

 

      private Bundle bundle;

      private Intent intent;

      private String type = null;

      private String dianya = null;

      private String name = null;

      Gallery g = null;

      Button but1 = null;//选择按钮

      Button but2 = null;//删除按钮

      Button but3 = null;//上传按钮

      TextView text1 = null;//命名Text

      EditText edit1 = null;//命名Edit

      List<String> it = null;//遍历符合条件的列表

      List<String> seList = new ArrayList<String>();//已选择列表

      public String actionUrl = null;

      public String dqPhoto = null;

      public ProgressDialog myDialog=null;

 

      private final String SD_PATH = android.os.Environment

                    .getExternalStorageDirectory().getAbsolutePath();

 

      /** Called when the activity is first created. */

      @Override

      public void onCreate(Bundle savedInstanceState) {

             super.onCreate(savedInstanceState);

             setContentView(R.layout.location_photo);

             intent = getIntent();

             bundle = intent.getExtras();

             int num = bundle.getInt("selectType");

             type = new TypeDianyaOptions().getSelectType(num);

             dianya = new TypeDianyaOptions().getSelectDianYa(num);

             g = (Gallery) findViewById(R.id.mygallery);

             but1 = (Button) findViewById(R.id.but1);

             but2 = (Button) findViewById(R.id.but2);

             but3 = (Button) findViewById(R.id.but3);

             text1 = (TextView) findViewById(R.id.newNameText);

             edit1 = (EditText) findViewById(R.id.nameEdit);

 

             g.setAdapter(new ImageAdapter(this, getSD()));

             g.setOnItemClickListener(new OnItemClickListener() {

                    public void onItemClick(AdapterView<?> parent, View v,

                                  int position, long id) {

                           dqPhoto = it.get(position);

                           Toast.makeText(LocationPhoto.this,

                                         "序列:" + (position + 1) + "\n路径:" + it.get(position),

                                         Toast.LENGTH_LONG).show();

                    }

             });

//选择功能

             but1.setOnClickListener(new OnClickListener() {

 

                    public void onClick(View v) {

                           if (dqPhoto == null) {

                                  Toast.makeText(LocationPhoto.this, "点击锁定图片",

                                                Toast.LENGTH_LONG).show();

                           } else if (seList.contains(dqPhoto)) {

                                  dqPhoto = null;

                                  Toast.makeText(LocationPhoto.this, "图片已在选择列",

                                                Toast.LENGTH_LONG).show();

                           } else {

                                  seList.add(dqPhoto);

                                  dqPhoto = null;

                                  Toast.makeText(LocationPhoto.this, "选择成功",

                                                Toast.LENGTH_LONG).show();

                           }

                    }

             });

      //删除功能

             but2.setOnClickListener(new OnClickListener() {

 

                    public void onClick(View v) {

                           if (dqPhoto == null) {//未选择图片时

                                  Toast.makeText(LocationPhoto.this, "点击锁定图片",

                                                Toast.LENGTH_LONG).show();

                           } else if (!seList.contains(dqPhoto)) {

                                  dqPhoto = null;

                                  Toast.makeText(LocationPhoto.this, "图片不在选择列中",

                                                Toast.LENGTH_LONG).show();

                           } else {

                                  if (seList.remove(dqPhoto)) {

                                         dqPhoto = null;

                                         Toast.makeText(LocationPhoto.this, "图片已从选择列中删除",

                                                       Toast.LENGTH_LONG).show();

                                  } else {//从选择列中删除失败

                                         dqPhoto = null;

                                         Toast.makeText(LocationPhoto.this, "图片删除失败",

                                                       Toast.LENGTH_LONG).show();

                                          Toast.makeText(LocationPhoto.this,

                                          "选择的数目:" + seList.size(), Toast.LENGTH_LONG)

                                          .show();

                                  }

                           }

                    }

             });

      //上传功能

             but3.setOnClickListener(new OnClickListener() {

 

                    public void onClick(View v) {

                           name = edit1.getText().toString();

                           actionUrl = "http://124.128.199.98:8090/JNDLS/uploadImage?type="

                                         + type + "&dianya=" + dianya + "&name=" + name;

                           if (seList != null && seList.size() > 0) {

                                  if (name != null && name.length() > 0) {

                                         myDialog=ProgressDialog.show(LocationPhoto.this, "请稍等", "正在执行上传请求中...");

                                         Thread thread=new Thread(LocationPhoto.this);

                                         thread.start();

                                         

                                  } else {

                                         Toast.makeText(LocationPhoto.this, "请填写杆号为图片命名!",

                                                       Toast.LENGTH_LONG).show();

                                  }

                           } else {

                                  Toast.makeText(LocationPhoto.this, "尚未选择上传图片!",

                                                Toast.LENGTH_LONG).show();

                           }

                    }

             });

      }

 

//遍历SD卡中某一路径下指定类型的图片

      private List<String> getSD() {

             it = new ArrayList<String>();

             File f = new File(SD_PATH + "//" + "jndlzp");

             File[] files = f.listFiles();

 

             for (int i = 0; i < files.length; i++) {

                    File file = files[i];

                    if (getImageFile(file.getPath()))

                           it.add(file.getPath());

             }

             return it;

      }

 

//指定遍历文件类型

      private boolean getImageFile(String fName) {

             boolean re;

 

             String end = fName

                           .substring(fName.lastIndexOf(".") + 1, fName.length())

                           .toLowerCase();

 

             if (end.equals("jpg") || end.equals("gif") || end.equals("png")

                           || end.equals("jpeg") || end.equals("bmp")) {

                    re = true;

             } else {

                    re = false;

             }

             return re;

      }

 

      public class ImageAdapter extends BaseAdapter {

             int mGalleryItemBackground;

             private Context mContext;

             private List<String> lis;

 

             public ImageAdapter(Context c, List<String> li) {

                    mContext = c;

                    lis = li;

                    TypedArray a = obtainStyledAttributes(R.styleable.Gallery);

                    mGalleryItemBackground = a.getResourceId(

                                  R.styleable.Gallery_android_galleryItemBackground, 0);

                    a.recycle();

             }

 

             public int getCount() {

                    return lis.size();

             }

 

             public Object getItem(int position) {

                    return position;

             }

 

             public long getItemId(int position) {

                    return position;

             }

 

             public View getView(int position, View convertView, ViewGroup parent) {

                    ImageView i = new ImageView(mContext);

                    Bitmap bm = BitmapFactory.decodeFile(lis.get(position).toString());

                    i.setImageBitmap(bm);

                    i.setScaleType(ImageView.ScaleType.FIT_XY);

                    i.setLayoutParams(new Gallery.LayoutParams(188, 288));

                    i.setBackgroundResource(mGalleryItemBackground);

                    return i;

             }

      }

      public void run() {

             // TODO Auto-generated method stub

             try {

                    for (int i = 0; i < seList.size(); i++) {

                           uploadFile(actionUrl, seList.get(i));

                    }

                    handler.sendEmptyMessage(0);

                    

             } catch (Exception e) {

                    showDialog("上传失败!");

             }

             

      }

 

      //Handler构建之后,会坚挺传来的信息代码

      private Handler handler=new Handler(){

 

             @Override

             public void handleMessage(Message msg) {

                    // TODO Auto-generated method stub

                    myDialog.dismiss();

                    seList.clear();

                    showDialog("上传成功!");

             }

 

      };

     

  public void uploadFile(String actionUrl, String uploadFile) {

             String end = "\r\n";

             String twoHyphens = "--";

             String boundary = "*****";

             String nameStr = uploadFile.substring(uploadFile.lastIndexOf("/") + 1,

                           uploadFile.length());

             try {

                    URL url = new URL(actionUrl);

                    HttpURLConnection con = (HttpURLConnection) url.openConnection();

/*允许Input、Output,不使用Cache */              

con.setDoInput(true);

                    con.setDoOutput(true);

                    con.setUseCaches(false);

                  /*设定传送的method=POST */

                    con.setRequestMethod("POST");

                    /* setRequestProperty */

                    con.setRequestProperty("Connection", "Keep-Alive");

                    con.setRequestProperty("Charset", "UTF-8");

                    con.setRequestProperty("Content-Type",

                                  "multipart/form-data;boundary=" + boundary);

                   /*设定DataOutputStream */       

                   DataOutputStream ds = new DataOutputStream(con.getOutputStream());

                    ds.writeBytes(twoHyphens + boundary + end);

                    ds.writeBytes("Content-Disposition: form-data; "

                                  + "name=\"file1\";filename=\"" + nameStr + "\"" + end);

                    ds.writeBytes(end);

/*取得文件的FileInputStream */

                    FileInputStream fStream = new FileInputStream(uploadFile);

/*设定每次写入1024bytes */

                    int bufferSize = 1024;

                    byte[] buffer = new byte[bufferSize];

 

                    int length = -1;

                  /*从文件读取数据到缓冲区 */

                    while ((length = fStream.read(buffer)) != -1) {

                    /*将数据写入DataOutputStream中 */

                           ds.write(buffer, 0, length);

                    }

                    ds.writeBytes(end);

                    ds.writeBytes(twoHyphens + boundary + twoHyphens + end);

 

                    /* close streams */

                    fStream.close();

                    ds.flush();

                  /*取得Response内容 */

                    InputStream is = con.getInputStream();

                    int ch;

                    StringBuffer b = new StringBuffer();

                    while ((ch = is.read()) != -1) {

                           b.append((char) ch);

                    }

                  /*关闭DataOutputStream */

                    ds.close();

             } catch (Exception e) {

             }

      }

      public void showDialog(String mess) {

             new AlertDialog.Builder(LocationPhoto.this).setTitle("Message")

                           .setMessage(mess).setNegativeButton("确定",

                                         new DialogInterface.OnClickListener() {

                                                public void onClick(DialogInterface dialog,

                                                              int which) {

                                                }

                                         }).show();

      }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值