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时使用。
这时就会发现以前无法输入的用户密码可以使用了。
方法一: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时使用。
这时就会发现以前无法输入的用户密码可以使用了。
相关文章推荐
- c# 根据自定义Attribute排序
- C#文本框中默认是不允许使用全选的
- C# 二叉查找树实现
- C# 基础加强(二) 编译执行过程器
- C# 基础加强(一)可变参数params、索引器
- c#之new关键字
- C#操作字符串方法总结<转>
- C# DataTable 和List之间相互转换的方法
- C# 的List<T>筛选数据填充到另一个List<T>
- c#编程之UDP通信
- C#格式化数值结果表
- crc校验码生成程序(C#)
- C# 串口通信程序
- C#调用VC DLL接口函数参数类型对应介绍
- c#——完美实现短信验证
- C#寒假学习笔记(2)
- C#集合
- C#成神之路<12> C#数组
- C# 中 DataTable 使用详解。
- c#导出到excel的几种解决方案