一.windows7建立ftp服务器
1.ftp功能开启
控制面板->程序->程序和功能->打开或关闭windows功能
->打开Internet信息服务中的ftp服务器全部功能
web管理工具
IIS管理控制台
2.ftp用户添加
计算机管理->用户->创建用户->设置用户密码和权限
3.ftp文件夹设置
新建文件夹用于ftp服务器控制
右键文件夹->属性->安全->编辑->添加->高级->立即查找->选择用户
->确定->确定->权限改为完全控制->应用->确定
4.ftp服务器添加
右键我的电脑->计算机管理->服务和应用程序
->Internet信息服务(IIS)管理器->右键网站添加tfp站点
->站点名称随意->物理路径为上个步骤ftp文件夹
->ip全部未分配->端口21(若已占用请修改)->ssl无->身份验证基本
->允许所有用户访问->权限读取与写入->完成
5.测试访问ftp
打开我的电脑,在地址栏输入ftp地址(默认端口21,可省略)
例如: ftp://192.168.0.111
若无法连接,可能是防火墙
二.特殊处理
1.windows10防火墙开启ftp
控制面板\系统和安全\Windows Defender 防火墙 ->高级设置 ->入站规则->按组筛选->按FTP服务器筛选->全部启用
2.开启端口(当端口21被占用,使用另外的端口,可能无法通过防火墙)
通过netstat -ano 查看端口占用情况
右键入站规则->新建规则->端口->TCP 填写端口 ->按步骤完成
三.android上传数据
添加权限:
<uses-permission android:name="android.permission.INTERNET" />
依赖添加 build.gradle dependencies
implementation 'commons-net:commons-net:3.6'
网络访问需要开启新线程,代码:
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(ip,port);
ftpClient.login(ftpUser,ftpPassword);
int reply =ftpClient.getReplyCode();
if(reply!=230){ //连接异常}
// 设置文件传输模式
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
/*boolean changeDirResult=ftpClient.changeWorkingDirectory("/test");
Log.d("", "run: changeDirResult: "+changeDirResult);*/
OutputStream outputStream = ftpClient.appendFileStream(fileName);
if(outputStream!=null) {
outputStream.write(str.getBytes());
outputStream.flush();
outputStream.close();
}
if(ftpClient.completePendingCommand()){ //上传成功};
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}