引用開源框架經過AsyncHttpClient進行文件上傳

1、步驟:

1.添加權限(訪問網絡權限和讀寫權限)java

2.獲取上傳文件路徑並判斷是否爲空android

3.若不爲空,建立異步請求對象apache

4.建立上傳文件路徑網絡

5.執行post請求(指定url路徑,封裝上傳參數,新建AsyncHttpResponseHandler方法)app

 

2、查看參考文檔

 

3、實例項目解析

運行效果以下:框架

      


在本地文件夾中查看是否獲取到圖片,以下圖顯示
異步


重點代碼:均有詳細解析,請認真查看註釋ide

一、在AndroidManifest.xml中添加權限oop

    <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"/>

 

二、佈局文件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>  


三、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

相關文章
相關標籤/搜索