参考网址: https://blog.csdn.net/Abaonanermy/article/details/131529507
一、引言
本文章主要介绍如何基于Windows自带的IIS工具来搭建FTP服务器。
二、环境要求
个人PC上装有Windows10操作系统,或者Server版本的Windows操作系统。
三、前期准备
3.1 创建用户组
Windows10对用户组和用户的管理比较严格,而且我们作为一个FTP服务器,肯定涉及到非常多的用户,单独使用用户来管理工作量非常大而且不方便,所以这里我们首先创建一个用户组ftpGroup。
Step1:快捷键:Windows+R->打开运行窗口,输入:compmgmtlauncher,点击确定
Step2:计算机管理 -> 系统工具 -> 本地用户和组 –> 组 -> 右键,新建组。填写组名、描述,最后点击创建。
Step3:创建成功后,可以看到多出一个ftpGroup组
3.2 创建用户
作为FTP服务器,需要多个用户,我们这里只创建一个,其他的大家按照同样的方法创建即可。
Step1:本地用户和组 -> 用户 -> 右键,新用户。输入用户名、密码(用户密码会被进行简单性校验,最好包含字母字符和数字) 去掉用户下次登录时须更改密码选项,勾选密码永不过期,点击创建。
Step2:创建成功后,可以看到用户中多出一个ftpUser1用户
Step3:修改刚才创建的ftpUser1用户所隶属的用户组,选中用户名右击->属性
Step4:隶属于->添加,输入对象名称(就是3.1创建的那个用户组名称)后,点击检查名称,最后点击确定。
Step5:完成后,可以看到ftpUser1隶属的用户组如下:
我们需要将出ftpGroup组以外的其他组删除,具体操作是:选中组名称(如Users),点击删除,最后点击应用->确定。
四、搭建FTP服务器
4.1 准备工作
Step1:快捷键:Windows+R,打开运行窗口,输入:control点击确定
Step2:点击程序和功能->点击启用或关闭Windows功能,将Internet Informations Services及其下方的所有选项都勾选上,然后点击确定等待安装完成。
4.2 安装FTP服务器
Step1:快捷键:Windows+R->打开运行窗口,输入:compmgmtlauncher,点击确定
Step2:点击服务和应用程序下的Internet Information Services(IIS)管理器->右击网站->添加FTP站点
Step3:填写FTP站点名称,自定义即可(注意不要有中文字符和其他特殊字符);物理路径:选择一个你本地电脑存在的路径即可(最好不含中文)。最后,点击下一步。
Step4:勾选无SSL->下一步
Step5:身份验证,勾选基本;授权->允许访问->选择:指定角色或用户组,然后填写用户组名称(即3.1创建用户组中创建的);权限候选:读取、写入,最后点击完成。
4.3 设置目录权限
Step1:找到4.2安装FTP服务器Step3中的物理路径,选中路径中最底层文件夹,鼠标右击->属性,切换到安全选项卡,点击编辑->添加->输入对象名称ftpGroup(即3.1用户组),然后点击检查名称->确定
Step2:选中ftpGroup用户组,在下方权限中勾选上相应权限,点击应用->确定
至此,有关FTP服务器的搭建工作已完成,由于涉及用户组的变更,可能需要重启后才能生效。建议重启服务器后再测试连接。
- 否则可能导致无法连接ftp服务器
- 重启后即可进行访问验证 ftp://地址
五、启动FTP服务器
Step1:打开IIS找到我们刚才创建的FTP站点,点击启动。提示:如下图所示信息,则表示Windows服务没有开启。
Step2:快捷键:Windows+R,打开运行窗口,输入:services.msc,点击确定。
Step3:找到Microsoft FTP Service并启动。
Step4:再次执行Step1,启动FTP服务器。
六、FTP服务器测试
6.1 Xftp工具
百度网盘下载链接:链接:https://pan.baidu.com/s/19mLZyEpjSwU2rUIcZprpmg?pwd=0703
提取码:0703
Xftp安装完成并打开,点击顶部菜单栏文件->新建,填写基本信息即可,其中协议:FTP;用户名:3.2创建的用户;密码:3.2创建用户时所指定的密码。
登录成功主界面显示如下
6.2 C#代码
Step1:新建一个Winform项目,然后通过NuGet安装第三方类库FluentFTP。
Step2:新建一个窗体Form,然后在其Load事件中加入如下测试代码即可。
using FluentFTP;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Deployment.Application;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AppAutoUpdate
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
upload2FTP();
}
private void upload2FTP()
{
string host = "localhost";//FTP服务器主机
string username = "ftpuser1";//用户名
string password = "Hey0703112418";//密码
string uploadFile = $@"E:\第三范式\猫神快开平台使用技巧.md";//上传文件路径
FtpClient ftpClient = new FtpClient(host, username, password);
ftpClient.AutoConnect();
try
{
if (!ftpClient.DirectoryExists("HeyVital"))
ftpClient.CreateDirectory("HeyVital");
FtpStatus status = ftpClient.UploadFile(uploadFile, "HeyVital/" + Path.GetFileName(uploadFile));
if ((int)status == 1)
MessageBox.Show("上传成功");
//FtpListItem[] items = ftpClient.GetListing("HeyVital");
//ftpClient.DeleteFile(items[0].FullName);
ftpClient.Dispose();
}
catch (Exception ex)
{
throw;
}
}
}
}
执行完上述代码后,如果在FTP文件夹路径下包含刚才上传的文件,表示FTP服务器搭建成功。