找呀志_通过开源框架引AsyncHttpClient上传文件
一个、步骤:
1.加入权限(接入网络和可写)
2.获取上传文件的路径和推断是空的
3.如果为空。创建一个异步请求对象
4.创建上传文件路径
5.跑post请求(指定url路径。封装上传參数。新建AsyncHttpResponseHandler方法)
二、查看參考文档
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhpMjEyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
三、实例项目解析
执行效果例如以下:
在本地目录中查看是否获取到图片,例如以下图显示
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhpMjEyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
重点代码:均有具体解析。请认真查看凝视
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);
} //点击上传button
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://download.csdn.net/detail/zhaoyazhi2129/7400787
源代码:http://download.csdn.net/detail/zhaoyazhi2129/7400811
转发请标明原文地址http://blog.csdn.net/zhaoyazhi2129/article/details/27048149
版权声明:本文博客原创文章。博客,未经同意,不得转载。
找呀志_通过开源框架引AsyncHttpClient上传文件的更多相关文章
- 找呀志_通过开源框架引AsyncHttpClient处理get/post要求
一个.开源参考架构的方法. 方法一 找到下载的文件的源代码,Com中的src文件夹下 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhp ...
- android 使用AsyncHttpClient框架上传文件以及使用HttpURLConnection下载文件
AsyncHttpClient开源框架android-async-http还是非常方便的. AsyncHttpClient该类通经常使用在android应用程序中创建异步GET, POST, PUT和 ...
- OkHttp上传文件,服务器端请求解析找不到文件信息的问题
长话短说,不深入解释了,官方给的上传案例代码: private static final String IMGUR_CLIENT_ID = "..."; private stati ...
- SSM框架中如何简便上传文件表单
此种方式上传文件相对简单,以下均经测试成功,才提供到此. 以下为单个文件上传方式 分析:本次的工作目的是根据一级标题产生对应的二级标题,在每个二级标题下对应一个(file字段)新闻文件,当点击新闻文件 ...
- Struts2框架下的文件上传文件类型、名称约定
Struts2框架下的文件上传机制:1.通过multipart/form-data form提交文件到服务器2.文件名是通过什么地方设置的?在strust2的FileUploadInterceptor ...
- 使用XWAF框架(2)——上传文件
XWAF提供了上传文件的HttpFileUploader工具类,具备强大的多文件上传.文件类型过滤.文件大小限制.存储目录设置.文件名称更改等功能,简化了Web应用开发的编程工作. 它能同时解析表单参 ...
- ssm框架实现图片上传显示并保存地址到数据库
本案例是通过springmvc+spring+mybatis框架以商品上传为例,实现的图片上传功能,并把图片的地址保存到数据库并在前台显示上传的图片. 本项目是使用maven搭建的项目,首先看下项目结 ...
- Django框架 之 Form表单和Ajax上传文件
Django框架 之 Form表单和Ajax上传文件 浏览目录 Form表单上传文件 Ajax上传文件 伪造Ajax上传文件 Form表单上传文件 html 1 2 3 4 5 6 7 <h3& ...
- DotnetBrowser高级教程-(4)使用MVC框架3-文件上传
网站有时候需要上传文件,本节以上传一张图片为例,在UserController.cs里添加如下代码: public string UploadImgPage() { return "< ...
随机推荐
- android文件下载大小和网络不一致(偏大)
今天在写一个文件下载的程序,在网上搜索了一个抄,用来下载MP3文件. 但是发现下载的MP3文件比原来的文件要大,而且MP3中会有杂音. 在Log中加入日志后发现: 从 网络流中获取的流长度为3000 ...
- RStudio版本号管理 整合Git
本文为原创,转载注明出处. 系统环境: win7 x64 R-3.1.0-win.exe RStudio-0.98.507.exe 前置条件:必须拥有github仓库: 如:https://githu ...
- poj2531
看了一下0ms,16ms,100ms左右过了的代码,思维量对我来说比較大,不是非常easy理解. 我的作法: 用并查集算权值和. 用dfs枚举两个点集的全部可能,因为是全然图,枚举一半的点就可以. # ...
- wift - 使用UIScreen类获取屏幕大小尺寸
UISreen类代表了屏幕,开发中一般用来获取屏幕相关的属性,例如获取屏幕的大小. 1 2 3 4 5 6 7 //获取屏幕大小 var screenBounds:CGRect = UIScreen. ...
- CodeForce 439C Devu and Partitioning of the Array(模拟)
Devu and Partitioning of the Array time limit per test 1 second memory limit per test 256 megabytes ...
- JSP的学习(3)——语法知识二之page指令
本篇接上一篇<JSP的学习(2)——语法知识一>,继续来学习JSP的语法.本文主要从JSP指令中的page指令,对其各个属性进行详细的学习: JSP指令: JSP指令是为JSP引擎而设计的 ...
- 2007LA 3902 网络(树+贪心)
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=283&am ...
- uva 147 Dollars(完全背包)
题目连接:147 - Dollars 题目大意:有11种硬币, 现在输入一个金额, 输出有多少种组成方案. 解题思路:uva 674 的升级版,思路完全一样, 只要处理一下数值就可以了. #inclu ...
- OpenStack使用Bosh部署CloudFoundry(一)—准备OpenStack环境
版本说明: CloudFoundry:V2版本 OpenStack:Folsom或者Grizzly版本 本篇文章采用OpenStack Folsom+nova-network的OpenStack环境, ...
- OSX: 使用命令行对FileVault2分区恢复
FileVault 2必须有Recovery HD分区,因为它依赖于它作为系统初启动.如果今后什么时候或者误操作删除了Recovery HD分区,那么你的机器就无法启动鸟. 是否使用苹果的办法重新获得 ...