ftp上传和下载
1.Code
///
///
///
/// 要上传文件的名字
/// 本地上传文件的路径
public void UpLoadToFtp(string fileName, string filePath)
{
string ftpServerIp = ConfigurationManager.AppSettings["fptServer"].ToString();
string ftpUser = ConfigurationManager.AppSettings["ftpUser"].ToString();
string ftpPwd = ConfigurationManager.AppSettings["ftpPwd"].ToString();
FileInfo fileInfo = new FileInfo(filePath + "\\" + fileName);
string strUrl = "ftp://" + ftpServerIp + "/" + fileName;
FtpWebRequest reqFtp =(FtpWebRequest)FtpWebRequest.Create(new Uri(strUrl));
reqFtp.Credentials = new NetworkCredential(ftpUser, ftpPwd);
// 默认为true,连接不会被关闭
// 在一个命令之后被执行
reqFtp.KeepAlive = false;
// 指定执行什么命令
reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
// 指定数据传输类型
reqFtp.UseBinary = true;
// 上传文件时通知服务器文件的大小
reqFtp.ContentLength = fileInfo.Length;
// 缓冲大小设置为2kb
int buffLength = 2048;
byte[] buff = new byte;
int contentLen;
// 打开一个文件流 (System.IO.FileStream) 去读上传的文件
FileStream fs = fileInfo.OpenRead();
try
{
// 把上传的文件写入流
Stream strm = reqFtp.GetRequestStream();
// 每次读文件流的2kb
contentLen = fs.Read(buff, 0, buffLength);
// 流内容没有结束
while (contentLen != 0)
{
// 把内容从file stream 写入 upload stream
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
// 关闭两个流
strm.Close();
fs.Close();
}
catch (Exception ex)
{
}
}
}
Code
///
///
///
/// 要下载的文件名字
/// 本地存放的路径
public void DownLoadFromFtp(string downFileName, string saveFilePath)
{
string ftpServerIp = ConfigurationManager.AppSettings["fptServer"].ToString();
string ftpUser = ConfigurationManager.AppSettings["ftpUser"].ToString();
string ftpPwd = ConfigurationManager.AppSettings["ftpPwd"].ToString();
string bakPath = ConfigurationManager.AppSettings["bakFilePath"].ToString();
string nowDate = DateTime.Now.ToString("yyyyMMddHHmmss");
string fileName = downFileName.Substring(0, downFileName.IndexOf("."));
string pathName = saveFilePath + "\\" + downFileName;
//FtpWebRequest reqFTP;
FtpWebRequest reqFtp;
try
{
if (File.Exists(pathName))
{
File.Move(pathName, bakPath + "\\" + fileName + nowDate + ".txt");
}
FileStream outputStream = new FileStream(pathName, FileMode.Create);
reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIp + "/" + downFileName));
reqFtp.Method = WebRequestMethods.Ftp.DownloadFile;
reqFtp.UseBinary = true;
reqFtp.Credentials = new NetworkCredential(ftpUser, ftpPwd);
FtpWebResponse response = (FtpWebResponse)reqFtp.GetResponse();
Stream ftpSteam = response.GetResponseStream();
long contentLen = response.ContentLength;
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte;
readCount = ftpSteam.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpSteam.Read(buffer, 0, bufferSize);
}
ftpSteam.Close();
outputStream.Close();
response.Close();
}
catch (Exception ex)
{
}
}
2.通过bat方式上传
Code
Imports System.IO
Public Shared Sub UpLoadFTPBat(ByVal fileName As String, ByVal filePath As String)
Dim ftpServer As String = "cetbiserver"
Dim ftpUserName As String = "gi\ike_li"
Dim ftpPassWord As String = "ikeli123456"
Dim fileNamePath As String = filePath + fileName + ".xls"
Dim ftpFileName = filePath + "\" + fileName + ".ftp"
Dim sw As StreamWriter = New StreamWriter(ftpFileName, False)
sw.WriteLine("open" + ftpServer)
sw.WriteLine("user")
sw.WriteLine(ftpUserName)
sw.WriteLine(ftpPassWord)
sw.WriteLine("cd /scsTEST/")
sw.WriteLine("put " + fileNamePath)
sw.WriteLine("quit")
sw.Flush()
sw.Close()
Dim BatCommandLine As String = "ftp -v -n -i -s:" + ftpFileName
Dim ftpBatFileName As String = filePath + "\" + fileName + ".bat"
Dim sw2 As StreamWriter = New StreamWriter(ftpBatFileName, False)
sw2.WriteLine(BatCommandLine)
sw2.Close()
Dim p As System.Diagnostics.Process = New System.Diagnostics.Process
p.StartInfo.FileName = ftpBatFileName
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.Start()
p.WaitForExit()
Dim ftpOutPut As String = p.StandardOutput.ReadToEnd
p.Close()
Dim fileName_FtpLog = filePath + "\" + fileName + ".log"
Dim sw3 As StreamWriter = New StreamWriter(fileName_FtpLog, False)
sw3.WriteLine(ftpOutPut)
sw3.Flush()
sw3.Close()
End Sub
页:
[1]