android ftp(【Android】android ftp上传功能实现)

本文目录
【Android】android ftp上传功能实现
今天讲一讲 android怎么上传文件到ftp
***隐藏网址***
先说说例子文件结构
一个简单的界面
例子项目文件 这两个权限是必须的 uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" / uses-permission android:name="android.permission.INTERNET" /
ftp的java类 变量设置
上传单个文件 uploadSingleFile
上传多个文件 uploadMultiFile
上传单个文件(带返回 true上传成功, false上传失败)
上传文件之前初始化相关参数
上传完成之后关闭连接
打开FTP服务. 这个地方是比较重要的(ftp的相关操作)
关闭FTP服务.
用到的监听接口
ProgressInputStream的java类 数据流的类
extends InputStream 流的方法实现
MainActivity上传的方法怎么使用 提示语的常量
上传的方法的使用
Android开发访问FTP服务器
commons-net.jar里面有ftp相关的接口,这个是我自己封装的一个类
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
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.content.Context;
import android.content.SharedPreferences;
public class FTPUtils {
/**
* 通过ftp上传文件
*
* @param fileNamePath
* 要上传的文件路径 , 以’结’尾
* @param fileName
* 要上传的文件名
* @return 如果成功返回"" , 否则返回错误结果
*/
public static String ftpUpload(String sdcardFullFileName, String fileName, String ftpPath) {
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;
String returnMessage = "";
try {
ftpClient.connect(ConnectConfig.ftpIP, ConnectConfig.ftpPort);
boolean loginResult = ftpClient.login(ConnectConfig.ftpUserName, ConnectConfig.ftpPassWord);
int returnCode = ftpClient.getReplyCode();
if (loginResult && FTPReply.isPositiveCompletion(returnCode)) {// 如果登录成功
String splits = ftpPath.split("/");
String temps = splits;
ftpClient.makeDirectory(temps);
for(int i=1;i《splits.length;i++){
temps += "/" + splits;
ftpClient.makeDirectory(temps);
}
//ftpClient.makeDirectory(ftpPath);
// 设置上传目录
ftpClient.changeWorkingDirectory(ftpPath);
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("UTF-8");
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
fis = new FileInputStream(sdcardFullFileName);
//boolean result = ftpClient.(fileName, fis);
boolean result = ftpClient.storeFile(fileName, fis);
if(result){
returnMessage = ""; // 上传成功
}else{
returnMessage = "上传失败";
}
} else {// 如果登录失败
returnMessage = "登录FTP时失败,FTP用户名或者密码错误!";
}
} catch (IOException e) {
// ftp发送出现异常
e.printStackTrace();
returnMessage = "FTP客户端出错!" + e;
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return returnMessage;
}
}
android ftpclient.connect()报错
执行到ftp.connect(ftpIP)进报的错,ftpIP是有值是IP+ ": "+端口
//FTP连接
public boolean connectFTP(){
try {
ftp = new FTPClient();
if(ftpPort.equals( " ")){
ftp.connect(ftpIP);
}
boolean blogin = ftp.login(ftpUser,ftpPassword);
if (!blogin) {
System.out.println( "FTP连接失败: "+ftpIP);
ftp.disconnect();
ftp = null;
return false;
}
return true;
} catch (Exception e) {
e.printStackTrace();
System.out.println( "FTP连接失败: "+ftpIP);
}
return false;
}
java.net.InetAddress.getAllByName0(InetAddress.java:591)
java.net.InetAddress.getAllByName0(InetAddress.java:560)
java.net.InetAddress.getByName(InetAddress.java:492)
java.net.Socket. 《init》 (Socket.java:121)
at org.apache.commons.net.DefaultSocketFactory.createSocket(DefaultSocketFactory.java:53)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:162)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:250)
at JavaAgent.connectFTP(JavaAgent.java:432)
------解决方案--------------------
没人知道吗,急啊!!!!!!!
------解决方案--------------------
import sun.net.ftp.*;
import java.io.*;
import java.io.IOException;
import java.util.StringTokenizer;
import sun.net.ftp.*;
import java.util.ArrayList;
import sun.net.TelnetOutputStream;
public class ftpClient {
public ftpClient() {
}
FtpClient client;
private String host= "135.64.160.151 ";//FTP服务器IP
private String username= "anonymous ";//FTP用户名字
private String password= " ";//FTP密码
private String path = "/test "; //文件要放哪个目录
private int port = 21; //FTP端口
/**
* 连接服务器方法
*/
public void connect() {
try {
client = new FtpClient(host);
client.login(username, password);
//设置成2进制传输
client.binary();
client.cd(path);
System.out.println( "登陆成功 ");
}
catch (FtpLoginException e) {
System.out.println( "无权限相连接 " + e.getMessage());
}
catch(IOException e){
System.out.println( "连接失败 "+e.getMessage());
}
catch(SecurityException e){
System.out.println( "用户名字或者密码不对 ");
}
}

更多文章:
atom加速器(Android Studio模拟器,需安装Intel haxm加速器,因特尔以外的CPU可安装吗)
2026年9月23日 08:40
传美版qq提示音(QQ的消息声音太难听了,怎么能改一改呢,我下完的声音都使用不了,要什么格式的呢)
2026年9月22日 23:40







