iis ftp winform 的ftp传输控制 - IIS - 服务器之家

服务器之家

专注于服务器技术!
当前位置:首页 > Web服务器 > IIS

iis ftp winform 的ftp传输控制

发布时间:2017-04-30 来源:服务器之家

由于项目需要开发了一套,远程服务器ftp下载文件的工具,由于各个服务器使用的ftp服务器不同,c#自带的ftp类是无法使用的,所以使用ftp.exe这个工具来进行ftp的上传与下载,这部分看似简单,但是使用常见的方法却难以实现,原因就是自动命令行输入用户名与密码的问题。
方法一:FtpWebRequest+FtpWebResponse
这种方式就是利用自带的类进行ftp上传下载,经过尝试有些可用有些不可用,具体用法可百度信息很多。

方法二:使用Process调用ftp.exe 此方法不可用,原因为填写ftp密码时无法自动写入。
string filepath = System.AppDomain.CurrentDomain.BaseDirectory;
string ftppath = “file/” + “ftp.exe”;
Process p = new Process();
p.EnableRaisingEvents = true;
p.Exited += new EventHandler(p_Exited);
p.StartInfo.FileName = “123”;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = false;
p.Start();
StreamWriter sw = p.StandardInput;
sw.WriteLine(“open XX.XX.XX.XX”);
sw.WriteLine(“123”);//用户名
sw.WriteLine(“123”);//密码
sw.WriteLine(@”get 123.txt”);
sw.WriteLine(“bye”);
p.WaitForExit();

方法三:
调用.bat批量处理文件,将信息已参数的形式传递给批处理,以此解决无法输入密码的问题,调用方式可以参考方法二,具体脚本如下:
@echo off
if exist cf.tmp(del cf.tmp)
echo open %1% >>cf.tmp
echo %2%>>cf.tmp
echo %3%>>cf.tmp
echo cd %4%>>cf.tmp
echo bin>>cf.tmp
echo put %5/%6>>cf.tmp
echo bye>>cf.tmp
ftp -s:cf.tmp
del cf.tmp
@echo on

其中cf.tmp为ftp配置文件,先写入配置信息,然后调用ftp时使用。
这时就会发现以前无法输入的用户密码可以使用了。