android ftp服务配置文件,Android FTP服务器上传文件如何实现?

Android FTP服务器上传文件如何实现?

发布时间:2020-06-23 15:39:58

来源:亿速云

阅读:155

作者:清晨

这篇文章将为大家详细讲解有关Android FTP服务器上传文件如何实现?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Ftp相关代码

import android.util.Log;

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

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

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

import java.io.FileInputStream;

public class FTPClientUtils {

private static final String TAG = "MainActivity";

private FTPClient ftpClient = null; // FTP客户端

/**

* 连接到FTP服务器

*

* @param host ftp服务器域名

* @param username 访问用户名

* @param password 访问密码

* @param port 端口

* @return 是否连接成功

*/

public boolean ftpConnect(String host, String username, String password, int port) {

try {

ftpClient = new FTPClient();

ftpClient.connect(host,port);

// 根据返回的状态码,判断链接是否建立成功

if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {

boolean status = ftpClient.login(username, password);

/*

* 设置文件传输模式

* 避免一些可能会出现的问题,在这里必须要设定文件的传输格式。

* 在这里我们使用BINARY_FILE_TYPE来传输文本、图像和压缩文件。

*/

ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

ftpClient.enterLocalPassiveMode();

return status;

}

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

/**

* 断开ftp服务器连接

*

* @return 断开结果

*/

public boolean ftpDisconnect() {

// 判断空指针

if (ftpClient == null) {

return true;

}

// 断开ftp服务器连接

try {

ftpClient.logout();

ftpClient.disconnect();

return true;

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

/**

* ftp 文件上传

*

* @param srcFilePath 源文件目录

* @param desFileName 文件名称

* @return 文件上传结果

*/

public boolean ftpUpload(String srcFilePath, String desFileName) {

boolean status = false;

try {

FileInputStream srcFileStream = new FileInputStream(srcFilePath);

status = ftpClient.storeFile(desFileName, srcFileStream);

srcFileStream.close();

return status;

} catch (Exception e) {

e.printStackTrace();

}

return status;

}

/**

* ftp 更改目录

*

* @param path 更改的路径

* @return 更改是否成功

*/

public boolean ftpChangePath(String path) {

boolean status = false;

try {

status = ftpClient.changeWorkingDirectory(path);

} catch (Exception e) {

e.printStackTrace();

}

return status;

}

}

2.调用api

boolean isConnect = mFtpClient.ftpConnect("服务器host", "用户名", "密码", 21);//默认端口号是21

if (isConnect) {

boolean isSuccessful = mFtpClient.ftpUpload("/sdcard/" + folderName + "/" + mPicturename, "/htdocs/pics/" + mPicturename);

if (isSuccessful) {

mFtpClient.ftpDisconnect();

//上传成功

} else {

//上传失败

}

} else {

//服务器连接失败

}

附录:自己之前做项目的时候写过的FTP上传代码:

package com.kandao.yunbell.videocall;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.net.SocketException;

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

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

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

import com.kandao.yunbell.common.SysApplication;

import android.content.Context;

import android.util.Log;

public class MyUploadThread extends Thread {

private String fileName;// 文件名字

private String filePath;// 文件本地路径

private String fileStoragePath;// 文件服务器存储路径

private String serverAddress;// 服务器地址

private String ftpUserName;// ftp账号

private String ftpPassword;// ftp密码

private Context mContext;

public MyUploadThread() {

super();

// TODO Auto-generated constructor stub

}

public MyUploadThread(Context mContext,String fileName, String filePath,

String fileStoragePath,String serverAddress,String ftpUserName,String ftpPassword) {

super();

this.fileName = fileName;

this.filePath = filePath;

this.fileStoragePath = fileStoragePath;

this.serverAddress = serverAddress;

this.ftpUserName = ftpUserName;

this.ftpPassword = ftpPassword;

this.mContext=mContext;

}

@Override

public void run() {

super.run();

try {

FileInputStream fis=null;

FTPClient ftpClient = new FTPClient();

String[] idPort = serverAddress.split(":");

ftpClient.connect(idPort[0], Integer.parseInt(idPort[1]));

int returnCode = ftpClient.getReplyCode();

Log.i("caohai", "returnCode,upload:"+returnCode);

boolean loginResult = ftpClient.login(ftpUserName, ftpPassword);

Log.i("caohai", "loginResult:"+loginResult);

if (loginResult && FTPReply.isPositiveCompletion(returnCode)) {// 如果登录成功

// 设置上传目录

if (((SysApplication) mContext).getIsVideo()) {

((SysApplication) mContext).setIsVideo(false);

boolean ff=ftpClient.changeWorkingDirectory(fileStoragePath + "/video/");

Log.i("caohai", "ff:"+ff);

}else{

boolean ee=ftpClient.changeWorkingDirectory(fileStoragePath + "/photo/");

Log.i("caohai", "ee:"+ee);

}

ftpClient.setBufferSize(1024);

// ftpClient.setControlEncoding("iso-8859-1");

// ftpClient.enterLocalPassiveMode();

ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

fis = new FileInputStream(filePath + "/"

+ fileName);

Log.i("caohai", "fileStoragePath00000:"+fileStoragePath);

String[] path = fileStoragePath.split("visitorRecord");

boolean fs = ftpClient.storeFile(new String((path[1]

+ "/photo/" + fileName).getBytes(), "iso-8859-1"), fis);

Log.i("caohai", "shifoushangchuanchenggong:"+fs);

fis.close();

ftpClient.logout();

//ftpClient.disconnect();

} else {// 如果登录失败

ftpClient.disconnect();

}

} catch (NumberFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SocketException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

关于Android FTP服务器上传文件如何实现?就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值