您的位置:首页 > 编程语言 > C#

c# Winform 下 的ftp传输控制

2016-02-06 10:56 281 查看
由于项目需要开发了一套,远程服务器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时使用。

这时就会发现以前无法输入的用户密码可以使用了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: