ftp上传(二)实现选择文件上传

主类:

package com.ken.ftp;

import java.io.File;
import java.io.FileInputStream;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class FtpUploadActivity extends Activity {
	public static final int FILE_RESULT_CODE = 1; 
	private EditText et;
	private String fName;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      
        Button xz=(Button)findViewById(R.id.xz);
        et=(EditText)findViewById(R.id.et);
        xz.setOnClickListener(new OnClickListener() {  
            
            public void onClick(View v) {  
                Intent intent = new Intent(FtpUploadActivity.this,MyFileManager.class);  
                startActivityForResult(intent,FILE_RESULT_CODE);  
            }  
        });  
        
        Button mbutton =(Button)findViewById(R.id.mbutton);
        mbutton.setOnClickListener(new OnClickListener(){

			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				uploadFile();
			}
        	
        });
        
    }
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
        if(FILE_RESULT_CODE == requestCode){  
            Bundle bundle = null;  
            if(data!=null&&(bundle=data.getExtras())!=null){  
                et.setText(bundle.getString("file"));  
                fName=bundle.getString("fileName").toString();
            }  
        }  
    }  
    public void uploadFile(){
    	FTPClient ftp=new FTPClient();
    	//SERVER ip
    	String server="192.168.5.184"; 
    	//登录密码和账号
    	String username="test";
    	String password="123";
    	String file=et.getText().toString();
    	try{
    		ftp.setDefaultTimeout(30000);
    		ftp.connect(server);
    		int reply=ftp.getReplyCode();
    		if(!FTPReply.isPositiveCompletion(reply)){
    			ftp.disconnect();
    			showDialog("ftp服务器连接失败!");
    		}else{
    			if(ftp.login(username, password)){
    				ftp.enterLocalPassiveMode();
    				ftp.setFileType(FTP.BINARY_FILE_TYPE);
    				FileInputStream fis=new FileInputStream(new File(file));
    				ftp.storeFile(fName, fis);
    			}
    			ftp.logout();
    			showDialog("文件上传成功!");
    		}
    	}catch(Exception e){
    		showDialog(""+e);
    	}finally{
    		if(ftp.isConnected()){
    			try{
    				ftp.disconnect();
    			}catch(Exception ioe){
    				showDialog(""+ioe);
    			}
    		}
    	}
    	
    }
    private void showDialog(String mess){
    	new AlertDialog.Builder(FtpUploadActivity.this).setTitle("message")
    	.setMessage(mess)
    	.setNegativeButton("确定",new DialogInterface.OnClickListener() {
			
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub
				
			}
		}).show();
    }
}


文件选择类:

package com.ken.ftp;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class MyFileManager extends ListActivity {  
    private List<String> items = null;  
    private List<String> paths = null;  
    private String rootPath = "/";  
    private String curPath = "/";  
    private TextView mPath;  
    private String fName;
    private final static String TAG = "bb";  
    @Override  
    protected void onCreate(Bundle icicle) {  
        super.onCreate(icicle);  
        requestWindowFeature(Window.FEATURE_NO_TITLE);  
        setContentView(R.layout.fileselect);  
        mPath = (TextView) findViewById(R.id.mPath);  
        Button buttonConfirm = (Button) findViewById(R.id.buttonConfirm);  
        buttonConfirm.setOnClickListener(new OnClickListener() {  
            public void onClick(View v) {  
                Intent data = new Intent(MyFileManager.this, FtpUploadActivity.class);  
                Bundle bundle = new Bundle();  
                bundle.putString("file", curPath);  
                bundle.putString("fileName", fName);
                data.putExtras(bundle);  
                setResult(2, data);  
                finish();  
            }  
        });  
        Button buttonCancle = (Button) findViewById(R.id.buttonCancle);  
        buttonCancle.setOnClickListener(new OnClickListener() {  
            public void onClick(View v) {  
                finish();  
            }  
        });  
        getFileDir(rootPath);  
    }  
    private void getFileDir(String filePath) {  
        mPath.setText(filePath);  
        items = new ArrayList<String>();  
        paths = new ArrayList<String>();  
        File f = new File(filePath);  
        File[] files = f.listFiles();  
        if (!filePath.equals(rootPath)) {  
            items.add("b1");  
            paths.add(rootPath);  
            items.add("b2");  
            paths.add(f.getParent());  
        }  
        for (int i = 0; i < files.length; i++) {  
            File file = files[i];  
            items.add(file.getName());  
            paths.add(file.getPath());  
        }  
        setListAdapter(new MyAdapter(this, items, paths));  
    }  
    @Override  
    protected void onListItemClick(ListView l, View v, int position, long id) {  
        File file = new File(paths.get(position));  
        if (file.isDirectory()) {  
            curPath = paths.get(position);  
            getFileDir(paths.get(position));  
        } else {  
            //可以打开文件  
        	 fName = file.getName().toString();  
        	mPath.setText(paths.get(position));
        	curPath=paths.get(position);
      
        }  
    }  
}  


选择文件的适配器:

package com.ken.ftp;

import java.io.File;
import java.util.List;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter  
{  
  private LayoutInflater mInflater;  
  private Bitmap mIcon1;  
  private Bitmap mIcon2;  
  private Bitmap mIcon3;  
  private Bitmap mIcon4;  
  private List<String> items;  
  private List<String> paths;  
  public MyAdapter(Context context,List<String> it,List<String> pa)  
  {  
    mInflater = LayoutInflater.from(context);  
    items = it;  
    paths = pa;  
    mIcon1 = BitmapFactory.decodeResource(context.getResources(),R.drawable.back01);  
    mIcon2 = BitmapFactory.decodeResource(context.getResources(),R.drawable.back02);  
    mIcon3 = BitmapFactory.decodeResource(context.getResources(),R.drawable.folder);  
    mIcon4 = BitmapFactory.decodeResource(context.getResources(),R.drawable.doc);  
  }  
    
  public int getCount()  
  {  
    return items.size();  
  }  
  public Object getItem(int position)  
  {  
    return items.get(position);  
  }  
    
  public long getItemId(int position)  
  {  
    return position;  
  }  
    
  public View getView(int position,View convertView,ViewGroup parent)  
  {  
    ViewHolder holder;  
      
    if(convertView == null)  
    {  
      convertView = mInflater.inflate(R.layout.file_row, null);  
      holder = new ViewHolder();  
      holder.text = (TextView) convertView.findViewById(R.id.text);  
      holder.icon = (ImageView) convertView.findViewById(R.id.icon);  
        
      convertView.setTag(holder);  
    }  
    else  
    {  
      holder = (ViewHolder) convertView.getTag();  
    }  
    File f=new File(paths.get(position).toString());  
    if(items.get(position).toString().equals("b1"))  
    {  
      holder.text.setText("返回根目录..");  
      holder.icon.setImageBitmap(mIcon1);  
    }  
    else if(items.get(position).toString().equals("b2"))  
    {  
      holder.text.setText("返回上一层..");  
      holder.icon.setImageBitmap(mIcon2);  
    }  
    else  
    {  
      holder.text.setText(f.getName());  
      if(f.isDirectory())  
      {  
        holder.icon.setImageBitmap(mIcon3);  
      }  
      else  
      {  
        holder.icon.setImageBitmap(mIcon4);  
      }  
    }  
    return convertView;  
  }  
  private class ViewHolder  
  {  
    TextView text;  
    ImageView icon;  
  }  
}  

上传是出现问题:

原因:上传的文件名出现中文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值