Android 使用开源框架实现上传本地文件至服务器

这里使用到了Xutils这个开源工具包来实现android环境下的上传文件至服务器。这个工具包可以在Github中找到,下载下来,然后添加到工程的类库中即可。
在使用这个工具包的时候,可能会遇到包中某些类无法找到,这是应为系统的版本问题,高版本的系统不提供这个包中所用到的类,所以这个时候就需要根据需要去下载相应的类,导入工程类库中。
package com.example.lenovo.fileUpload;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;

import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest;

import java.io.File;

public class MainActivity extends AppCompatActivity {
    //所要上传的文件的地址输入控件
    private EditText ed_filePath;
    //上传进度显示控件
    ProgressBar pb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ed_filePath = (EditText) findViewById(R.id.ed_filePath);
        pb = (ProgressBar) findViewById(R.id.pb);
    }

    public void upload(View v){
    //获取文件在本机中的位置
        String filePath = ed_filePath.getText().toString().trim();

        File file = new File(filePath);
        //检测文件是否存在
        if(!file.exists()){
            Log.d("Main", "文件不存在");
            return ;
        }
        //设置请求参数
        RequestParams params = new RequestParams();
        //设置这是一个文件上传请求,并且是通过POST方式
        params.addBodyParameter("myFile", file);
        //处理上传文件的服务器脚本,这里使用PHP实现的
        String url = "http://127.0.0.1/index.php";
        HttpUtils http = new HttpUtils();
        //发送请求
        http.send(HttpRequest.HttpMethod.POST, url, params, new RequestCallBack<String>() {
            @Override
            //请求成功
            public void onSuccess(ResponseInfo<String> responseInfo) {
                Log.d("Main", "upload successfully"+responseInfo.result);

            }

            @Override
            //请求失败
            public void onFailure(HttpException e, String s) {
                Log.d("Main", "upload failurely"+s);
            }

            @Override
            //请求开始
            public void onStart() {
                super.onStart();
                Log.d("Main", "start upload");
            }

            @Override
            //上传中
            public void onLoading(long total, long current, boolean isUploading) {
                Log.d("Main", "uploaded :"+current+"/"+total);
                //将实时的上传进度通过ProgressBar控件显示给用户
                pb.setMax((int) total);
                pb.setProgress((int) current);
                super.onLoading(total, current, isUploading);
            }
        });

    }
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值