原文地址:http://www.apkbus.com/forum.php?mod=viewthread&tid=2975&highlight=Android%E7%B3%BB%E5%88%97%E4%B9%8B
这几天一直在想Android中实现POST图片和POST数据的问题,今天终于写了一个小DOME
- private void imageClient(){
-
- // // 隐藏title
- // this.requestWindowFeature(Window.FEATURE_NO_TITLE);
- //
- // // 设置全屏
- // getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
- fileName = UUID.randomUUID().toString();
-
- try{
- Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- imgFile = new File(Environment.getExternalStorageDirectory(), fileName + ".jpg");
- Uri outputFileUri = Uri.fromFile(imgFile);
- cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
- startActivityForResult(cameraIntent, 10);
- } catch (Exception ex) {
- ex.printStackTrace();
- Log.e("EP", "" + ex.getMessage());
- }
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data){
- // 父类方法
- super.onActivityResult(requestCode, resultCode, data);
-
- switch (resultCode) {
- case RESULT_OK:
- LogUtil.info("on Activity Result");
- Bundle extras = data.getExtras();
- b = (Bitmap) extras.get("data");
-
- new Thread(new Runnable(){
- public void run(){
- if (b != null) {
- try {
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(android.os.Environment.getExternalStorageDirectory() + "/test.jpg"));
- // 压缩图片
- b.compress(CompressFormat.JPEG, 75, bos);
- bos.flush();
- bos.close();
- } catch (Exception e) {
- Log.e("Exception", "file or compress exception")
- e.printStackTrace();
- }
-
- }
- imgFile = new File(android.os.Environment.getExternalStorageDirectory() + "/" +fileName + ".jpg");
-
- // ImgManager.resize(file, file, 200, "jpg");
-
- // 发送到服务器
- if(!HttpUtil.postImg("http://neil.finalist.hk/namex/namex/nclient/upload", "user", "client", imgFile))
- // 发送失败则重发一次
- HttpUtil.postImg("http://neil.finalist.hk/namex/namex/nclient/upload", "user", "client", imgFile);
- }
- }
- }).start();
- }
- }
发送
@SuppressWarnings( " deprecation " )
- public
- static
- boolean postImg(String url, String u, String c, File file){
- LogUtil.info(""
- + file.exists());
- PostMethod postMethod =
- new PostMethod(url);
- Part[] part =
- new Part[4];
- part[0] =
- new StringPart("u", u);
- part[1] =
- new StringPart("c", c);
- try {
- part[2] =
- new FilePart("Filedata", file);
- } catch (FileNotFoundException ex) {
- ex.printStackTrace();
- Log.e("file exception", ex.getMessage());
- }
- part[3] =
- new StringPart("flag", "image");
- MultipartRequestEntity mrp =
- new MultipartRequestEntity(part, postMethod.getParams());
- postMethod.setRequestEntity(mrp);
- org.apache.commons.httpclient.HttpClient client =
- new org.apache.commons.httpclient.HttpClient();
- client.getParams().setContentCharset("utf-8");
- try {
- client.executeMethod(postMethod);
- if("false".equals(postMethod.getRequestEntity().toString())){
- return
- false;
- }
- } catch (HttpException e) {
- e.printStackTrace();
- return
- false;
- } catch (IOException e) {
- e.printStackTrace();
- return
- false;
- }finally {
- if (client !=
- null) {
- client =
- null;
- }
- if (postMethod !=
- null) {
- postMethod =
- null;
- }
- return
- true;
- }