清风的blog 优然探索

Android 文件上传

 

package com.example.android_upload;

import java.io.File;

import org.apache.http.Header;
import org.apache.http.client.params.ClientPNames;

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;
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;
 private ProgressBar progressBar1;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //获取控件
  et_file = (EditText) findViewById(R.id.et_upload);
  progressBar1= (ProgressBar) findViewById(R.id.progressBar1);
 }

 //点击上传按钮
 public void upload(View v) {
  int id = v.getId();
  switch (id) {
  case R.id.btn_upload:
   //获取上传文件的路径
   Toast.makeText(getApplicationContext(), "文件上传", 1).show();
   
   String path = et_file.getText().toString();
   //判断上次路径是否为空
   if (TextUtils.isEmpty(path.trim())) {
    Toast.makeText(this, "上次文件路径不能为空", 1).show();
   } else {
    //异步的客户端对象
    AsyncHttpClient client = new AsyncHttpClient();
    client.getHttpClient().getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, false); 
    //指定url路径
    String url = "http://192.168.0.118:9101/upload/?userid=qzf";
    url="http://192.168.0.133:8280/?userid=qzf";
    //url="http://192.168.0.122:8000/useraction/getsession";
    //封装文件上传的参数
    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.addHeader("Content-Type", "text/xml; charset=utf-8");
    //client.addHeader("user-agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4");
//    client.addHeader("Content-Type", "text/xml");
//    client.addHeader("Accept", "*/*"); 
//    client.addHeader("Accept-Encoding", "gzip, deflate"); 
//    client.addHeader("Accept-Language", "zh-cn"); 
//    client.addHeader("Connection", "Keep-Alive"); 
//    client.addHeader("Accept-Charset", "utf-8");
//    client.addHeader("Host", "192.168.0.191");
    //client.addHeader("Accept", "*/*"); 
    
//    headers.put("Accept", "*/*"); 
//          headers.put("Accept-Encoding", "gzip, deflate"); 
//          headers.put("Accept-Language", "zh-cn"); 
//          headers.put("Connection", "Keep-Alive"); 
    client.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; .NET CLR 1.1.4322; CIBA; .NET CLR 2.0.50727)");
    client.post(url,params, new AsyncHttpResponseHandler() {

     
     
     @Override
     public void onProgress(int bytesWritten, int totalSize) {
      // TODO Auto-generated method stub
      
      super.onProgress(bytesWritten, totalSize);
      progressBar1.setProgress(bytesWritten*100/totalSize);
     }

     @Override
     public void onSuccess(int statusCode, Header[] headers,
       byte[] responseBody) {
      
      String str = new String(responseBody);
      if (statusCode == 200) {
       System.out.println(str);
       Toast.makeText(getApplicationContext(), "上次成功"+ str.toString(), 1).show();
      }
      else
      {
       Toast.makeText(getApplicationContext(), "上传失败"+statusCode, 1).show();
      }
     }

     @Override
     public void onFailure(int statusCode, Header[] headers,
       byte[] responseBody, Throwable error) {
      
      //error.printStackTrace();
      //String str = new String(responseBody);      Toast.makeText(getApplicationContext(), "onFailure上传失败"+statusCode, 1).show();
     }
    });

   }
   break;

  default:
   break;
  }

 }

}

2016年9月2日 | 发布:admin | 分类:未分类 | 评论:0

发表留言: