利用loopj的android-async-http进行文件上传

学习到了安卓上传文件了!!!

在Android端,用到的是android-async-http框架,

github地址为:https://github.com/koush/AndroidAsync/

在AS中搭建该框架超级简单,只需要在build.gradle中加入下面2句(下图中黄色标记的2处),然后build一下项目,AS会自动把该框架需要的jar包放入到lib里。

由于sdk自从5.0(或者6.0)之后抛弃了httpclient,所以用这个框架,需要手动添加一些配置,来使Android支持httpclient。

同样在build.gradle中加入标红的那一行配置即可

apply : android {
    compileSdkVersion buildToolsVersion defaultConfig {
        minSdkVersion targetSdkVersion }
    buildTypes {
        release {
            proguardFiles getDefaultProguardFile(), }
    }
  }

dependencies {
    compile fileTree(: , : [])
    androidTestCompile(, {
        exclude : , : })
   compile compile testCompile }

1、MainActivity

com.yuanlp.fileuploadandroid.os.Bundleandroid.support.v7.app.AppCompatActivityandroid.text.TextUtilsandroid.view.Viewandroid.widget.EditTextandroid.widget.Toastcom.loopj.android.http.AsyncHttpClientcom.loopj.android.http.AsyncHttpResponseHandlercom.loopj.android.http.RequestParamsjava.io.BufferedWriterjava.io.Filejava.io.FileWriterjava.io.IOExceptioncz.msebera.android.httpclient.HeaderMainActivity AppCompatActivity {

    EditText (Bundle savedInstanceState) {
        .onCreate(savedInstanceState)setContentView(R.layout.)= (EditText) findViewById(R.id.)File file=File(getCacheDir()){
            BufferedWriter writer=BufferedWriter(FileWriter(file))writer.write()writer.flush()} (IOException e) {
            e.printStackTrace()}
    }

    (View view){
            String path=.getText().toString().trim()(TextUtils.(path)){
            Toast.(Toast.).show()}
        File file=File(path)(file.exists()&&file.length()>){ AsyncHttpClient asyncHttpClient = AsyncHttpClient()RequestParams params = RequestParams(){
                params.put(file)asyncHttpClient.post(paramsAsyncHttpResponseHandler() {
                    (statusCodeHeader[] headers[] responseBody) {
                        Toast.(MainActivity.Toast.).show()}

                    (statusCodeHeader[] headers[] responseBodyThrowable error) {
                        Toast.(MainActivity.Toast.).show()}
                })} (Exception e) {
                e.printStackTrace()}
        }{
            Toast.(Toast.).show()}
    }
}

2 java web端,用springMVC

本来获取到multipartfile后,是通过multipart.getInputStream()方式来生成file文件,写入到硬盘的,但是一直获取不到这个输入流,暂时也没查到什么原因。就换了一种方法,直接用multipart的transferTo()方法,参数里是个file类型文件,这样子把文件写入后台

@RequestMapping(value = "savePdaFiles")

public void savePdaFiles(HttpServletRequest request, HttpServletResponse response) {

String file_path=request.getSession().getServletContext().getRealPath("upload/media");

MultipartHttpServletRequest multipartHttpServletRequest=(MultipartHttpServletRequest) request;

MultipartFile multipartFile=multipartHttpServletRequest.getFile("file1");

String fileName=multipartFile.getOriginalFilename();

try {

multipartFile.transferTo(new File(file_path+fileName));

} catch (Exception e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

3、web.xml配置拦截

<!-- Http请求拦截过滤器 -->

<filter>

<filter-name>httpRequestFilter</filter-name>

<filter-class>cn.osworks.aos.web.asset.HttpRequestFilter</filter-class>

<init-param>

<param-name>enabled</param-name>

<param-value>true</param-value>

</init-param>

<init-param>

<param-name>excludes</param-name>

<param-value>login.jhtml,pdaLogin.jhtml,savePdaFiles.jhtml,savePdaFileList.jhtml,/esb/</param-value>

</init-param>

</filter>

时间: 2024-10-13 18:43:43

利用loopj的android-async-http进行文件上传的相关文章

Android使用HttpClient实现文件上传到PHP服务器,并监控进度条

上传 服务器端PHP 代码如下 : <?php $target_path = "./tmp/";//接收文件目录 $target_path = $target_path.($_FILES['file']['name']); $target_path = iconv("UTF-8","gb2312", $target_path); if(move_uploaded_file($_FILES['file']['tmp_name'], $targ

Android开发之httpclient文件上传实现

文件上传可能是一个比較耗时的操作,假设为上传操作带上进度提示则能够更好的提高用户体验,最后效果例如以下图: 项目源代码:http://download.csdn.net/detail/shinay/4965230 这里仅仅贴出代码,可依据实际情况自行改动. [java] view plaincopy package com.lxb.uploadwithprogress.http; import java.io.File; import org.apache.http.HttpResponse;

Android网页WebView图片文件上传的问题

在安卓下,webview上传图片点击是没用的,需要自己写一下. 网上关于这个的很多,基本都是抄来抄去,没什么用的. 这个日期比较新,而且能用 http://blog.csdn.net/djcken/article/details/46379929#comments 就是自定义实现 WebChromeClient 然后重写  openFileChooser  方法,获取 ValueCallback<Uri> valueCallback 当然,要注意不同版本的区别.,但5.0+的项目,就不能用了.

android webview type=file文件上传,安卓端代码

http://stackoverflow.com/questions/5907369/file-upload-in-webview http://blog.csdn.net/longlingli/article/details/16946047 1 package com.example.cairh_sjkh_it; 2 3 4 import android.app.Activity; 5 import android.app.AlertDialog; 6 import android.app.

android使用HttpURLConnection实现带参数文件上传

文件上传是常见功能,然而android网上大多数的文件上传都使用httpclient,而且需要添加一个httpmine-jar,其实HttpURLConnection也可以实现文件上传,但是它在移动端有个弊端,就是不能上传大文件,所以这次说的方式,只能上传一些较小的文件. 文件上传,并且带上一些参数,这需要我们了解http请求的构造方式,也就是它的格式. HttpURLConnection需要我们自己构造请求头部,也就是我们要拼接出一个正确完整的请求. 下面来看一个典型的例子 POST /api

Android客户端多文件上传

在web开发中,多文件上传时是非常方便的,直接使用Http协议提交数据即可.格式如下: <FORM METHOD=POST ACTION="http://192.168.1.101:8083/upload/servlet/UploadServlet" enctype="multipart/form-data"> <INPUT TYPE="text" NAME="name"> <INPUT TYPE

PHP如何实现文件上传

PHP如何实现文件上传 1.表单部分 允许用户上传文件,在HTML表单的声明中要加上一个上传的属性: enctype = 'multipart/form-data' 表单的method必须是POST 表单选项MAX_FILE_SIZE隐藏域用于限制上传文件大小,它必须放在文件表单元素前面,单位为字节. 如: 复制代码代码如下: <form enctype='multipart/form-data' id='aa' name='aaa' method='post' action='xxx.php'

SpringMVC 理论与有用技术(二)文件上传

文件上传相信大家都做过,差点儿全部的项目都有上传文件的功能,尤其是BS架构的项目中经常被列为常规功能来开发.不管是在开发.NET 项目还是java项目我们会用到非常多的框架,这个功能也被集成到了框架之中,由于他太经常使用了.框架就是为我们提供了一个开发项目的半成品结构.能够大大提高开发效率节省开发成本.缩短开发周期. 长话短说本文主要介绍一个怎么利用springmvc实现单个以及多个文件上传.附加说说上传文件的原理. 从详细的某个实例開始,先形似再神思 第一种方式设计思路:三个注意地方 1.表单

PHP文件上传全攻略(转)

转自:http://www.neatstudio.com/show-1343-1.shtml 这是一篇比较老的文章,其实从情感上来说,我更愿意推荐手册上的介绍,但事实上,在一些PHP群中,有些朋友在问的时候,他们总是想不到翻手册的. 嗯,英文的手册确实让人不太舒服,但,不可能在手册一出来就帮你翻译好的吧?事事都去期待别人,还不如把英文好好看看,再者,手册上的英文真的很简单的. 我不知道你们的手册是怎么样的,版本多少,但是我在我的手册里是有这么一个章节: Chapter 38. Handling

SpringMVC 理论与实用技术(二)文件上传

文件上传相信大家都做过,几乎所有的项目都有上传文件的功能,尤其是BS架构的项目中常常被列为常规功能来开发,无论是在开发.NET 项目还是java项目我们会用到很多的框架,这个功能也被集成到了框架之中,因为他太常用了,框架就是为我们提供了一个开发项目的半成品结构,可以大大提高开发效率节省开发成本.缩短开发周期. 长话短说本文主要介绍一个怎么利用springmvc实现单个以及多个文件上传,附加说说上传文件的原理. 从具体的某个实例开始,先形似再神思 第一种方式设计思路:三个注意地方 1.表单页面 2