Android引用开源框架通过AsyncHttpClient实现文件上传

引用开源框架通过AsyncHttpClient进行文件上传,具体内容如下

一、步骤:

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 tools:context=".MainActivity" > 

 <TextView
  android:id="@+id/textView1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="文件上传" /> 

 <EditText
  android:id="@+id/et_upload"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_below="@+id/textView1"
  android:ems="10"
  android:text="/storage/sdcard0/1.jpg"> 

  <requestFocus />
 </EditText> 

 <Button
  android:id="@+id/btn_upload"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@+id/et_upload"
  android:onClick="upload"
  android:text="上传文件" /> 

</RelativeLayout>

3、MainActivity.java

package com.example.android_upload; 

import java.io.File; 

import org.apache.http.Header; 

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast; 

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams; 

public class MainActivity extends Activity { 

 private EditText et_file; 

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //获取控件
  et_file = (EditText) findViewById(R.id.et_upload);
 } 

 //点击上传按钮
 public void upload(View v) {
  int id = v.getId();
  switch (id) {
  case R.id.btn_upload:
   //获取上传文件的路径
   String path = et_file.getText().toString();
   //判断上次路径是否为空
   if (TextUtils.isEmpty(path.trim())) {
    Toast.makeText(this, "上次文件路径不能为空", 1).show();
   } else {
    //异步的客户端对象
    AsyncHttpClient client = new AsyncHttpClient();
    //指定url路径
    String url = "http://172.16.237.144:8080/Login/UploadServlet";
    //封装文件上传的参数
    RequestParams params = new RequestParams();
    //根据路径创建文件
    File file = new File(path);
    try {
     //放入文件
     params.put("profile_picture", file);
    } catch (Exception e) {
     // TODO: handle exception
     System.out.println("文件不存在----------");
    }
    //执行post请求
    client.post(url,params, new AsyncHttpResponseHandler() { 

     @Override
     public void onSuccess(int statusCode, Header[] headers,
       byte[] responseBody) {
      if (statusCode == 200) {
       Toast.makeText(getApplicationContext(), "上次成功", 1)
         .show();
      }
     } 

     @Override
     public void onFailure(int statusCode, Header[] headers,
       byte[] responseBody, Throwable error) {
      error.printStackTrace();
     }
    }); 

   }
   break; 

  default:
   break;
  } 

 } 

}

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

开源框架资源:http://xiazai.jb51.net/201701/yuanma/AndroidAsyncHttpClient(jb51.net).rar

源码:http://xiazai.jb51.net/201701/yuanma/AsyncHttpClient(jb51.net).rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • android文件上传示例分享(android图片上传)

    主要思路是调用系统文件管理器或者其他媒体采集资源来获取要上传的文件,然后将文件的上传进度实时展示到进度条中. 主Activity 复制代码 代码如下: package com.guotop.elearn.activity.app.yunpan.activity; import java.io.File;import java.io.FileNotFoundException;import java.io.IOException; import android.app.Activity;impor

  • Android中使用HttpURLConnection实现GET POST JSON数据与下载图片

    Android6.0中把Apache HTTP Client所有的包与类都标记为deprecated不再建议使用所有跟HTTP相关的数据请求与提交操作都通过HttpURLConnection类实现,现实是很多Android开发者一直都Apache HTTP Client来做andoird客户端与后台HTTP接口数据交互,小编刚刚用HttpURLConnection做了一个android的APP,不小心踩到了几个坑,总结下最常用的就通过HttpURLConnection来POST提交JSON数据与

  • Android程序开发通过HttpURLConnection上传文件到服务器

    一:实现原理 最近在做Android客户端的应用开发,涉及到要把图片上传到后台服务器中,自己选择了做Spring3 MVC HTTP API作为后台上传接口,android客户端我选择用HttpURLConnection来通过form提交文件数据实现上传功能,本来想网上搜搜拷贝一下改改代码就好啦,发现根本没有现成的例子,多数的例子都是基于HttpClient的或者是基于Base64编码以后作为字符串来传输图像数据,于是我不得不自己动手,参考了网上一些资料,最终实现基于HttpURLConnect

  • Android基于Http协议实现文件上传功能的方法

    本文实例讲述了Android基于Http协议实现文件上传功能的方法.分享给大家供大家参考,具体如下: 注意一般使用Http协议上传的文件都比较小,一般是小于2M 这里示例是上传一个小的MP3文件 1.主Activity:MainActivity.java public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private EditText timel

  • 简单实现Android文件上传

    文件上传在B/S应用中是一种十分常见的功能,那么在Android平台下是否可以实现像B/S那样的文件上传功能呢?答案是肯定的.下面是一个模拟网站程序上传文件的例子. 首先新建一个Android工程,新建主启动Activity: MainActivity.java: package com.xzq.upload; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.InputStream;

  • Golang+Android基于HttpURLConnection实现的文件上传功能示例

    本文实例讲述了Golang+Android基于HttpURLConnection实现的文件上传功能.分享给大家供大家参考,具体如下: 这里要演示的是使用Android程序作为客户端(使用HttpURLConnection访问网络),Golang程序作为服务器端,实现文件上传. 客户端代码: public static String uploadFile(String uploadUrl, String filePath) { Log.v(TAG, "url:" + uploadUrl)

  • Android中发送Http请求(包括文件上传、servlet接收)的实例代码

    复制代码 代码如下: /*** 通过http协议提交数据到服务端,实现表单提交功能,包括上传文件* @param actionUrl 上传路径 * @param params 请求参数 key为参数名,value为参数值 * @param file 上传文件 */public static void postMultiParams(String actionUrl, Map<String, String> params, FormBean[] files) {try {PostMethod p

  • Android带进度条的文件上传示例(使用AsyncTask异步任务)

    最近项目中要做一个带进度条的上传文件的功能,学习了AsyncTask,使用起来比较方便,将几个方法实现就行,另外做了一个很简单的demo,希望能对大家有帮助,在程序中设好文件路径和服务器IP即可. demo运行截图: AsyncTask是抽象类,子类必须实现抽象方法doInBackground(Params... p),在此方法中实现任务的执行工作,比如联网下载或上传.AsyncTask定义了三种泛型类型Params,Progress和Result. 1.Params 启动任务执行的输入参数,比

  • 基于标准http实现Android多文件上传

    实现多文件的上传,基于标准的http来实现. 1.多文件上传MyUploader类的实现: /** * * 同步上传多个文件 * 基于标准的http实现,需要在非UI线程中调用,以免阻塞UI. * */ public class MyUploader { private static final String TAG = "MyUploader"; // ////////////////////同步上传多个文件///////// /** * 同步上传File * * @param Ur

  • Android使用xUtils3.0实现文件上传

    几个月前写过一篇博客<xUtils3.0框架学习笔记> ,上面也有记录通过xUtils实现文件上传的使用方法,代码如下: private void upLoadOnClick(View v) { String upUrl = "/mnt/sdcard/pic/test.jpg";//指定要上传的文件 final ProgressDialog dia = new ProgressDialog(this); dia.setMessage("加载中....")

  • 使用Android的OkHttp包实现基于HTTP协议的文件上传下载

    OkHttp的HTTP连接基础 虽然在使用 OkHttp 发送 HTTP 请求时只需要提供 URL 即可,OkHttp 在实现中需要综合考虑 3 种不同的要素来确定与 HTTP 服务器之间实际建立的 HTTP 连接.这样做的目的是为了达到最佳的性能. 首先第一个考虑的要素是 URL 本身.URL 给出了要访问的资源的路径.比如 URL http://www.baidu.com 所对应的是百度首页的 HTTP 文档.在 URL 中比较重要的部分是访问时使用的模式,即 HTTP 还是 HTTPS.这

随机推荐