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

发布时间 - 2026-01-10 22:31:05    点击率:

引用开源框架通过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./201701/yuanma/AndroidAsyncHttpClient().rar

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

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


# Android  # AsyncHttpClient  # 文件上传  # Python的Tornado框架的异步任务与AsyncHTTPClient  # AsyncHttpClient的默认配置源码流程解读  # 为空  # 上传文件  # 开源  # 上传  # 不存在  # 均有  # 若不  # 具体内容  # 自己动手  # 大家多多  # 如下图  # 客户端  # 判断是否  # 文档  # 夹中  # match_parent  # activity_vertical_margin  # layout_width  # layout_height 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  Laravel怎么判断请求类型_Laravel Request isMethod用法  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  EditPlus中的正则表达式 实战(2)  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel如何创建自定义中间件?(Middleware代码示例)  智能起名网站制作软件有哪些,制作logo的软件?  如何撰写建站申请书?关键要点有哪些?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  如何在阿里云部署织梦网站?  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  韩国服务器如何优化跨境访问实现高效连接?  Internet Explorer官网直接进入 IE浏览器在线体验版网址  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel如何自定义分页视图?(Pagination示例)  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  javascript中对象的定义、使用以及对象和原型链操作小结  再谈Python中的字符串与字符编码(推荐)  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  太平洋网站制作公司,网络用语太平洋是什么意思?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  iOS UIView常见属性方法小结  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Windows Hello人脸识别突然无法使用  无锡营销型网站制作公司,无锡网选车牌流程?  php 三元运算符实例详细介绍  如何在Windows服务器上快速搭建网站?  如何在新浪SAE免费搭建个人博客?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Laravel如何使用Vite进行前端资源打包?(配置示例)  Mybatis 中的insertOrUpdate操作  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  如何在Ubuntu系统下快速搭建WordPress个人网站?  网站建设保证美观性,需要考虑的几点问题!  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Laravel集合Collection怎么用_Laravel集合常用函数详解  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  如何用AWS免费套餐快速搭建高效网站?  如何在阿里云通过域名搭建网站?  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  公司门户网站制作流程,华为官网怎么做?  用yum安装MySQLdb模块的步骤方法  做企业网站制作流程,企业网站制作基本流程有哪些?