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模块的步骤方法
做企业网站制作流程,企业网站制作基本流程有哪些?

