引用开源框架通过AsyncHttpClient进行文件上传

一、步骤:

1.添加权限(访问网络权限和读写权限)

2.获取上传文件路径并判断是否为空

3.若不为空,创建异步请求对象

4.创建上传文件路径

5.执行post请求(指定url路径,封装上传参数,新建AsyncHttpResponseHandler方法)

 

二、查看参考文档

 引用开源框架通过AsyncHttpClient进行文件上传_第1张图片

三、实例项目解析

运行效果如下:

 引用开源框架通过AsyncHttpClient进行文件上传_第2张图片     引用开源框架通过AsyncHttpClient进行文件上传_第3张图片


在本地文件夹中查看是否获取到图片,如下图显示

引用开源框架通过AsyncHttpClient进行文件上传_第4张图片

重点代码:均有详细解析,请认真查看注释

1、在AndroidManifest.xml中添加权限

    <uses-permission android:name="android.permission.INTERNET"/>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

 

2、布局文件activity_main.xml

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:paddingBottom="@dimen/activity_vertical_margin"  
  6.     android:paddingLeft="@dimen/activity_horizontal_margin"  
  7.     android:paddingRight="@dimen/activity_horizontal_margin"  
  8.     android:paddingTop="@dimen/activity_vertical_margin"  
  9.     tools:context=".MainActivity" >  
  10.   
  11.     <TextView  
  12.         android:id="@+id/textView1"  
  13.         android:layout_width="wrap_content"  
  14.         android:layout_height="wrap_content"  
  15.         android:text="文件上传" />  
  16.   
  17.     <EditText  
  18.         android:id="@+id/et_upload"  
  19.         android:layout_width="match_parent"  
  20.         android:layout_height="wrap_content"  
  21.         android:layout_below="@+id/textView1"  
  22.         android:ems="10"   
  23.         android:text="/storage/sdcard0/1.jpg">  
  24.           
  25.         <requestFocus />  
  26.     EditText>  
  27.   
  28.     <Button  
  29.         android:id="@+id/btn_upload"  
  30.         android:layout_width="wrap_content"  
  31.         android:layout_height="wrap_content"  
  32.         android:layout_below="@+id/et_upload"  
  33.         android:onClick="upload"  
  34.         android:text="上传文件" />  
  35.   
  36. RelativeLayout>  

3、MainActivity.java

  1. package com.example.android_upload;  
  2.   
  3. import java.io.File;  
  4.   
  5. import org.apache.http.Header;  
  6.   
  7. import android.app.Activity;  
  8. import android.os.Bundle;  
  9. import android.text.TextUtils;  
  10. import android.view.View;  
  11. import android.widget.EditText;  
  12. import android.widget.Toast;  
  13.   
  14. import com.loopj.android.http.AsyncHttpClient;  
  15. import com.loopj.android.http.AsyncHttpResponseHandler;  
  16. import com.loopj.android.http.RequestParams;  
  17.   
  18. public class MainActivity extends Activity {  
  19.   
  20.     private EditText et_file;  
  21.   
  22.     @Override  
  23.     protected void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.activity_main);  
  26.         //获取控件  
  27.         et_file = (EditText) findViewById(R.id.et_upload);  
  28.     }  
  29.   
  30.     //点击上传按钮  
  31.     public void upload(View v) {  
  32.         int id = v.getId();  
  33.         switch (id) {  
  34.         case R.id.btn_upload:  
  35.             //获取上传文件的路径  
  36.             String path = et_file.getText().toString();  
  37.             //判断上次路径是否为空  
  38.             if (TextUtils.isEmpty(path.trim())) {  
  39.                 Toast.makeText(this"上次文件路径不能为空"1).show();  
  40.             } else {  
  41.                 //异步的客户端对象  
  42.                 AsyncHttpClient client = new AsyncHttpClient();  
  43.                 //指定url路径  
  44.                 String url = "http://172.16.237.144:8080/Login/UploadServlet";  
  45.                 //封装文件上传的参数  
  46.                 RequestParams params = new RequestParams();  
  47.                 //根据路径创建文件  
  48.                 File file = new File(path);  
  49.                 try {  
  50.                     //放入文件  
  51.                     params.put("profile_picture", file);  
  52.                 } catch (Exception e) {  
  53.                     // TODO: handle exception  
  54.                     System.out.println("文件不存在----------");  
  55.                 }  
  56.                 //执行post请求  
  57.                 client.post(url,params, new AsyncHttpResponseHandler() {  
  58.   
  59.                     @Override  
  60.                     public void onSuccess(int statusCode, Header[] headers,  
  61.                             byte[] responseBody) {  
  62.                         if (statusCode == 200) {  
  63.                             Toast.makeText(getApplicationContext(), "上次成功"1)  
  64.                                     .show();  
  65.                         }  
  66.                     }  
  67.   
  68.                     @Override  
  69.                     public void onFailure(int statusCode, Header[] headers,  
  70.                             byte[] responseBody, Throwable error) {  
  71.                         error.printStackTrace();  
  72.                     }  
  73.                 });  
  74.   
  75.             }  
  76.             break;  
  77.   
  78.         default:  
  79.             break;  
  80.         }  
  81.   
  82.     }  
  83.   
  84. }  


 

重点代码就是这些,自己动手查看一下效果吧!~

开源框架资源:http://download.csdn.net/detail/zhaoyazhi2129/7400787

源码:http://download.csdn.net/detail/zhaoyazhi2129/7400811


转发请标明原文地址http://blog.csdn.net/zhaoyazhi2129/article/details/27048149

你可能感兴趣的:(Android开发)