一个、步骤:

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

  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>

3、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. //点击上传button
  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

版权声明:本文博客原创文章。博客,未经同意,不得转载。

找呀志_通过开源框架引AsyncHttpClient上传文件的更多相关文章

  1. 找呀志_通过开源框架引AsyncHttpClient处理get/post要求

    一个.开源参考架构的方法. 方法一 找到下载的文件的源代码,Com中的src文件夹下 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhp ...

  2. android 使用AsyncHttpClient框架上传文件以及使用HttpURLConnection下载文件

    AsyncHttpClient开源框架android-async-http还是非常方便的. AsyncHttpClient该类通经常使用在android应用程序中创建异步GET, POST, PUT和 ...

  3. OkHttp上传文件,服务器端请求解析找不到文件信息的问题

    长话短说,不深入解释了,官方给的上传案例代码: private static final String IMGUR_CLIENT_ID = "..."; private stati ...

  4. SSM框架中如何简便上传文件表单

    此种方式上传文件相对简单,以下均经测试成功,才提供到此. 以下为单个文件上传方式 分析:本次的工作目的是根据一级标题产生对应的二级标题,在每个二级标题下对应一个(file字段)新闻文件,当点击新闻文件 ...

  5. Struts2框架下的文件上传文件类型、名称约定

    Struts2框架下的文件上传机制:1.通过multipart/form-data form提交文件到服务器2.文件名是通过什么地方设置的?在strust2的FileUploadInterceptor ...

  6. 使用XWAF框架(2)——上传文件

    XWAF提供了上传文件的HttpFileUploader工具类,具备强大的多文件上传.文件类型过滤.文件大小限制.存储目录设置.文件名称更改等功能,简化了Web应用开发的编程工作. 它能同时解析表单参 ...

  7. ssm框架实现图片上传显示并保存地址到数据库

    本案例是通过springmvc+spring+mybatis框架以商品上传为例,实现的图片上传功能,并把图片的地址保存到数据库并在前台显示上传的图片. 本项目是使用maven搭建的项目,首先看下项目结 ...

  8. Django框架 之 Form表单和Ajax上传文件

    Django框架 之 Form表单和Ajax上传文件 浏览目录 Form表单上传文件 Ajax上传文件 伪造Ajax上传文件 Form表单上传文件 html 1 2 3 4 5 6 7 <h3& ...

  9. DotnetBrowser高级教程-(4)使用MVC框架3-文件上传

    网站有时候需要上传文件,本节以上传一张图片为例,在UserController.cs里添加如下代码: public string UploadImgPage() { return "< ...

随机推荐

  1. IT段子,娱乐一下

    1.我是个程序员,一天我坐在路边一边喝水一边苦苦检查bug.这时一个乞丐在我边上坐下了,开始要饭,我觉得可怜,就给了他1块钱,然后接着调试程序.他可能生意不好,就无聊的看看我在干什么,然后过了一会,他 ...

  2. LeetCode: LRU Cache [146]

    [题目] Design and implement a data structure for Least Recently Used (LRU) cache. It should support th ...

  3. 简化ui文件转换写法

    在命令行敲一串长的命令.枯燥麻烦. #coding:utf-8 import sys import os import subprocess if len(sys.argv) == 2: #节省输入, ...

  4. 电驴 emule 源代码分析 (1)

    关于电驴emule 的源代码,网上有一个  叫刘刚的人 分析的 非常多,可是假设你仅仅是看别人的分析,自己没有亲身去阅读代码的话,恐怕非常难  剖析整个系统. 关于emule  主要就是 连接 kad ...

  5. 使用高德地图API

    http://lbs.amap.com/smart/map/developer/mode/ 简单的附上一张图,其实能做得比这个更强大.

  6. Android 通过wifi调试程序【转】

    1.首先让android手机监听指定的端口: 这一步需要使用shell,因此手机上要有终端模拟器,不过网上很多,随便找个就行了,依次敲入下列几行: ? su//获取root权限 setprop ser ...

  7. PLSQL数据导入

    导入数据 (1)      首先以管理员身份登录plsql; (2)      新建命令窗口 (3)      创建用户,设置帐号,密码 创建语句:create user usernameidenti ...

  8. Python 学习入门(23)—— 进程

    本文介绍Python的os包中有查询和修改进程信息的函数,Python的这些工具符合Linux系统的相关概念,所以可以帮助理解Linux体系. 1. 进程信息 os包中相关函数如下: uname()  ...

  9. 与众不同 windows phone (10) - Push Notification(推送通知)之推送 Tile 通知, 推送自定义信息

    原文:与众不同 windows phone (10) - Push Notification(推送通知)之推送 Tile 通知, 推送自定义信息 [索引页][源码下载] 与众不同 windows ph ...

  10. Test oracle db iops

    Today, i need to test one database's iops and do something for oracle db's io test. How to test the ...