码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-09-05 20:56:04      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:

一、步骤:

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

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

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

4.创建上传文件路径

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

 

二、查看参考文档

 技术分享

三、实例项目解析

运行效果如下:

 技术分享     技术分享


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

技术分享

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

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


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

标签:

原文地址:http://my.oschina.net/yuanxulong/blog/501404

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!