一个、步骤:

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. 基于visual Studio2013解决面试题之0804复杂链表

     题目

  2. 基于visual Studio2013解决C语言竞赛题之1063分橘子

       题目 解决代码及点评 /* 功能:某桔农家共有2520只桔子, 父亲要将它们分给六个儿子,其分法如下: 父亲先将2520只桔子分给六个儿子, 然后说:"老大,把你分到的桔子 ...

  3. Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码

    主要难点在于设置recv()与send()的超时时间,具体要注意的事项,请看代码注释部分,下面是代码: #include <stdio.h> #include <sys/types. ...

  4. uvc摄像头代码解析7

    13.uvc视频初始化 13.1 uvc数据流控制 struct uvc_streaming_control { __u16 bmHint; __u8 bFormatIndex; //视频格式索引 _ ...

  5. smartforms换页,

    smartforms换页,可以把最后的窗口设置成最终窗口, 这样页码有可以用系统变量控制: 总页码/页码 :&SFSY-FORMPAGES&

  6. DLP底座(威创定制)

    品牌:威创 型号:BC06730-1000 生产商:广东威创视讯科技股份有限公司 1.DLP底座说明 DLP底座由威创统一定制,确保了整套系统的完整性和可靠性.材质为钢结构,根据淄川地下管线中心的现场 ...

  7. mysql基础:列类型--整型

    mysql列类型--字符串  http://blog.csdn.net/jk110333/article/details/9342301 mysql列类型--时间和日期    http://blog. ...

  8. (萌O(∩_∩)O)哈希知识点小结

    噶呜~先来了解一下什么是哈希吧? 当我们要在一堆东西中找到想要的那一个东西,我们常常通过比较来找,理想的情况是不经过任何比较,一次就能找到,怎么才能做到这样呢?那就在记录的储存位置和他的关键字之间建立 ...

  9. Postfix+Amavisd-new+Spamassassin+ClamAV整合安装

    1. 安装软件和依赖包 apt-get install amavisd-new spamassassin clamav-daemon mysql-client mysql-server apt-get ...

  10. 对struts2的OGNL的理解

    OGNL:Object-Graph Navigation Language.对象图形化导航语言 OGNL是集成进struts2框架中比較强大的技术有助于传输数据和类型转换,OGNL由表达式语言和类型装 ...