FTP服务器搭建及C#实现FTP文件的上传
目录
2.搭建FTP服务器步骤(win10为例)
2.1开启ftp功能
2.2登录测试
2.2.1从网页登录
2.2.2通过cmd命令
3.上传文件到FTP服务器
3.1创建类库
3.2调用
1.ftp简介
FTP是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文本协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在ftp的使用当中,用户经常遇到两个概念:“下载”(Download)和“上传”(upload)。“下载”文件就是从远程主机拷贝文件至自己的计算机上;“上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
2.搭建FTP服务器步骤(win10为例)
2.1开启ftp功能
控制面板——》程序和功能——》打开或关闭Windows功能将如图的选框选中
2.1.2添加FTP站点
控制面板——》管理工具——》双击Internet信息服务(IIS)管理器如下图添加FTP站点
2.1.3设置站点名称和想要公开的路径
2.1.4绑定IP地址和ssl设置
IP地址填本机地址,端口默认21,ssl是一种数字加密证书,可申请,在此没有可选择无。
2.1.5设置权限,建议设置成读取状态,点击完成即可。
2.1.6添加用户
右击计算机——》管理——》本地用户和组——》用户
2.2登录测试
2.2.1从网页登录
浏览器中输入命令ftp://本地IP,如下图所示,输入用户名密码
用户名和密码输入正确的话就会出现公开的路径。
2.2.2通过cmd命令
通过出门的命令进入ftp来上传或下载
- 输入“ftp”切换到ftp下面,然后输入“open 服务器地址”
- 此时要求输入用户名密
- 上传文件,利用put '本地文件路径',来上传
总结:
┏━━━━━━━━━━━━━━━━━━━━━┓
┃ftp ┃
┃c:\ftp ┃
┃ftp:\open 主机IP+端口 (也可以不用写端口) ┃
┃当显示****logged in时,就说明登入成功了。 ┃
┃dir 查看FTP上的文件 ┃
┃CD 进入某个文件夹 ┃
┃GET 下载文件到本地 ┃
┃PUT 上传文件到FTP ┃
┃delete 删除FTP上的文件 ┃
┃bye 退出连接 ┃
┃quit 同上 ┃
┗━━━━━━━━━━━━━━━━━━━━━┛
3.上传文件到FTP服务器
3.1创建类库
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
namespace PrintDBSQL.Framework.Utility
{
public class FTPHelper
{
/// <summary>
/// FTP的服务器地址,格式为ftp://192.168.1.234:8021/。
/// </summary>
private string FTPCONSTR { get; set; }
/// <summary>
/// //FTP服务器的用户名
/// </summary>
private string FTPUSERNAME { get; set; }
/// <summary>
/// //FTP服务器的密码
/// </summary>
private string FTPPASSWORD { get; set; }
public FTPHelper(string ip, string username, string password, string port="21")
{
FTPCONSTR = string.Format("{0}://{1}:{2}/", "ftp", ip, port);
FTPUSERNAME = username;
FTPPASSWORD = password;
}
#region 本地文件上传到FTP服务器
/// <summary>
/// 上传文件到远程ftp
/// </summary>
/// <param name="path">本地的文件目录</param>
/// <param name="name">文件名称</param>
/// <returns></returns>
public bool UploadFile(string path, string name)
{
FileInfo f = new FileInfo(path);
path = FTPCONSTR + name;//这个路径是我要传到ftp目录下的这个目录下
FtpWebRequest reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
reqFtp.UsePassive = false;//只需要添加这一句话
reqFtp.UseBinary = true;
reqFtp.Credentials = new NetworkCredential(FTPUSERNAME, FTPPASSWORD);
reqFtp.KeepAlive = false;
reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
reqFtp.ContentLength = f.Length;
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
FileStream fs = f.OpenRead();
try
{
Stream strm = reqFtp.GetRequestStream();
contentLen = fs.Read(buff, 0, buffLength);
while (contentLen != 0)
{
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
strm.Close();
fs.Close();
return true;
}
catch (Exception ex)
{
return false;
}
}
#endregion
}
}
3.2调用:
FTP服务器中ftp站点的 物理路径为:C:\\ftpFileLocation。如果将logo.png图片上传至ftp服务器中的MPS文件夹下(即:C:\\ftpFileLocation\MPS\logo.png),调用如下:
string ftpIP= "192.168.11.196";
string ftpPort= "21";
string ftpUserName= "test";
string ftpPassword= "123";
string localPath = "G:\\Project\\logo.png";
string remotePath = "/MPS/logo.png";
FTPHelper FTPHelper = new FTPHelper(ftpIP, ftpUserName, ftpPassword, ftpPort);
bool uploadresult = FTPHelper.UploadFile(localPath , remotePath);
WJMT12138: 上传目标路径如果是D盘呢,怎么上传
CSDN-Ada助手: 恭喜作者完成第19篇博客!标题看起来非常有趣,我很期待阅读关于".net core WebAPI --文件分片上传"的内容。你的持续创作令人鼓舞,希望你能继续分享你的经验和知识。如果可能的话,我建议你在未来的博客中考虑介绍一些实际案例或者提供更多实用的代码示例,这将使读者更容易理解和应用你的教程。谢谢你的分享,期待你下一篇博客!
Python天下第一!!: PHP无yajin。adfsdegfxh ①有php开发经验; ②完成1个任务300,2个任务600,3个任务1100; 方法: 聊QQ:3520634045,领任务
毛毛系鱼: 业务咋联系?
heephp_mvc: 建议学习heephp框架