标签:目录 move and cal code else rename common ebe
帮助类:
using QSProjectBase;
using Reform.CommonLib;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
namespace Reform.CommonLib
{
///
/// ftp操作
///
public class FtpHelper
{
///
/// 上传文件
///
/// 上传文件的全路径
/// 上传类
///
public static bool UploadFile(FileInfo fileinfo, string ftpPath)
{
try
{
if (fileinfo == null || string.IsNullOrEmpty(ftpPath))
return false;
string url = ftpPath;
if (url.Contains("/") || url.Contains("\\"))
{
var str = url.Split(new Char[] { ‘/‘, ‘\\‘ });
var dic = url.Replace(str[str.Length - 1], "");
CheckAndMakeDir(dic);
}
System.Net.FtpWebRequest ftp = GetRequest(url);
//设置FTP命令 设置所要执行的FTP命令,
//ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails;//假设此处为显示指定路径下的文件列表
ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
ftp.UseBinary = true;
ftp.UsePassive = true;
ftp.ContentLength = fileinfo.Length;
const int BufferSize = 20480; //缓冲大小设置为20KB
byte[] content = new byte[BufferSize - 1 + 1];
int dataRead;
using (FileStream fs = fileinfo.OpenRead())
{
try
{
using (Stream rs = ftp.GetRequestStream())
{
do
{
dataRead = fs.Read(content, 0, BufferSize);
rs.Write(content, 0, dataRead);
} while (!(dataRead BufferSize));
rs.Close();
}
}
catch (Exception) { }
finally
{
fs.Close();
}
}
ftp = null;
////设置FTP命令
//ftp = GetRequest(URI);
//ftp.Method = System.Net.WebRequestMethods.Ftp.Rename; //改名
//ftp.RenameTo = fileinfo.Name;
//try
//{
// ftp.GetResponse();
//}
//catch (Exception ex)
//{
// ftp = GetRequest(URI);
// ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile; //删除
// ftp.GetResponse();
//}
//ftp = null;
return true;
}
catch (Exception)
{
return false;
}
}
///
/// 上传文件
///
/// 上传文件的全路径
/// 上传的目录(包括文件名)
/// 进度帮助
///
public static bool UploadFile(FileInfo fileinfo, string ftpPath, ProgressHelper progressHelper, MessageProgressHandler handler)
{
try
{
if (fileinfo == null || string.IsNullOrEmpty(ftpPath))
return false;
string url = ftpPath;
if (url.Contains("/") || url.Contains("\\"))
{
var str = url.Split(new Char[] { ‘/‘, ‘\\‘ });
var dic = url.Replace(str[str.Length - 1], "");
CheckAndMakeDir(dic);
}
System.Net.FtpWebRequest ftp = GetRequest(url);
//设置FTP命令 设置所要执行的FTP命令,
//ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails;//假设此处为显示指定路径下的文件列表
ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
ftp.UseBinary = true;
ftp.UsePassive = false;
ftp.ContentLength = fileinfo.Length;
const int BufferSize = 20480; //缓冲大小设置为20KB
byte[] content = new byte[BufferSize - 1 + 1];
int dataRead;
using (FileStream fs = fileinfo.OpenRead())
{
long fileLen = fs.Length;
if (progressHelper != null && handler != null)
{
progressHelper.SetProgress(handler, "正在上传...", 0);
}
try
{
long proValue = 0;
using (Stream rs = ftp.GetRequestStream())
{
do
{
dataRead = fs.Read(content, 0, BufferSize);
rs.Write(content, 0, dataRead);
proValue += dataRead;
if (progressHelper != null && handler != null)
{
progressHelper.SetProgress(handler, "正在上传...", (int)((double)proValue * 100 / fileLen));
}
} while (!(dataRead BufferSize));
var aa = rs.Length;
rs.Close();
}
}
catch (Exception) { }
finally
{
fs.Close();
}
}
ftp = null;
////设置FTP命令
//ftp = GetRequest(URI);
//ftp.Method = System.Net.WebRequestMethods.Ftp.Rename; //改名
//ftp.RenameTo = fileinfo.Name;
//try
//{
// ftp.GetResponse();
//}
//catch (Exception ex)
//{
// ftp = GetRequest(URI);
// ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile; //删除
// ftp.GetResponse();
//}
//ftp = null;
return true;
}
catch (Exception)
{
return false;
}
}
///
/// 下载文件
///
/// 下载到本地(全路径)
/// 要下载的附件类
public static bool DownloadFile(string localFilePath, string ftpPath)
{
if (string.IsNullOrEmpty(ftpPath)) return false;
if (string.IsNullOrEmpty(localFilePath)) return false;
System.Net.FtpWebRequest ftp = null;
try
{
string Url = ftpPath;
string localDir = new FileInfo(localFilePath).DirectoryName;
if (!Directory.Exists(localDir))
{
Directory.CreateDirectory(localDir);
}
string tmpname = Guid.NewGuid().ToString();
string tmpFilePath = localDir + @"\" + tmpname;
ftp = GetRequest(Url);
// MsgBoxShow.ShowInformation(Url);
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile;
ftp.UseBinary = true;
ftp.UsePassive = false;
using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (FileStream fs = new FileStream(tmpFilePath, FileMode.CreateNew))
{
var aa = ftp.ContentLength;
try
{
byte[] buffer = new byte[20480];
int read = 0;
do
{
read = responseStream.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, read);
} while (!(read == 0));
responseStream.Close();
fs.Flush();
fs.Close();
}
catch (Exception)
{
fs.Close();
File.Delete(tmpFilePath);
return false;
}
}
responseStream.Close();
}
response.Close();
}
try
{
File.Delete(localFilePath);
File.Move(tmpFilePath, localFilePath);
ftp = null;
}
catch (Exception)
{
File.Delete(tmpFilePath);
return false;
}
ftp = null;
return true;
}
catch (WebException e)
{
Common_LogManager.RecordLog(LogType.Error, e.Message, e);
if (e.Status == WebExceptionStatus.ProtocolError)
{
Console.WriteLine("Status Code : {0}", ((FtpWebResponse)e.Response).StatusCode);
Console.WriteLine("Status Description : {0}", ((FtpWebResponse)e.Response).StatusDescription);
}
return false;
}
}
///
/// 下载文件,叠加
///
/// 下载到本地(全路径)
/// 要下载的附件类
public static bool DownloadFileEx(string localFilePath, string ftpPath)
{
if (string.IsNullOrEmpty(ftpPath)) return false;
if (string.IsNullOrEmpty(localFilePath)) return false;
try
{
string Url = ftpPath;
System.Net.FtpWebRequest ftp = GetRequest(Url);
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile;
ftp.UseBinary = true;
ftp.UsePassive = false;
using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (FileStream fs = new FileStream(localFilePath, FileMode.Append))
{
try
{
byte[] buffer = new byte[20480];
int read = 0;
do
{
read = responseStream.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, read);
} while (!(read == 0));
responseStream.Close();
fs.Flush();
fs.Close();
}
catch (Exception)
{
fs.Close();
return false;
}
}
responseStream.Close();
}
response.Close();
}
try
{
ftp = null;
}
catch (Exception)
{
return false;
}
ftp = null;
return true;
}
catch (Exception)
{
return false;
}
}
///
/// 下载文件(包含进度)
///
/// 下载到本地(全路径)
/// 要下载的附件类
public static bool DownloadFile(string localFilePath, string ftpPath, ProgressHelper progressHelper, MessageProgressHandler handler)
{
if (string.IsNullOrEmpty(ftpPath)) return false;
if (string.IsNullOrEmpty(localFilePath)) return false;
try
{
string URI = ftpPath;
string localDir = new FileInfo(localFilePath).DirectoryName;
string tmpname = Guid.NewGuid().ToString();
string tmpFilePath = localDir + @"\" + tmpname;
System.Net.FtpWebRequest ftp = GetRequest(URI);
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile;
ftp.UseBinary = true;
ftp.UsePassive = false;
long fileLen = GetFileSize(ftpPath);
using (WebResponse response = ftp.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
if (progressHelper != null && handler != null)
{
progressHelper.SetProgress(handler, "正在下载...", 0);
}
using (FileStream fs = new FileStream(tmpFilePath, FileMode.OpenOrCreate))
{
try
{
long proValue = 0;
byte[] buffer = new byte[20480];
int read = 0;
do
{
read = responseStream.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, read);
proValue += read;
if (progressHelper != null && handler != null)
{
progressHelper.SetProgress(handler, "正在下载...", (int)((double)proValue * 100 / fileLen));
}
} while (!(read == 0));
responseStream.Close();
fs.Flush();
fs.Close();
}
catch (Exception)
{
fs.Close();
File.Delete(tmpFilePath);
return false;
}
}
responseStream.Close();
}
response.Close();
}
try
{
File.Delete(localFilePath);
File.Move(tmpFilePath, localFilePath);
ftp = null;
}
catch (Exception ex)
{
File.Delete(tmpFilePath);
return false;
}
ftp = null;
return true;
}
catch (Exception)
{
return false;
}
}
///
/// 删除文件
///
/// 要删除的附件全路径
public static bool DeleteFile(string ftpPath)
{
if (string.IsNullOrEmpty(ftpPath)) return false;
try
{
string URI = ftpPath;
System.Net.FtpWebRequest ftp = GetRequest(URI);
ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile;
ftp.UseBinary = true;
ftp.UsePassive = false;
using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
responseStream.Close();
}
response.Close();
}
ftp = null;
return true;
}
catch (Exception)
{
return false;
}
}
///
/// 搜索远程文件
///
/// 文件夹
/// 搜索模式
///
public static Liststring> ListDirectory(string targetDir, string SearchPattern)
{
Liststring> result = new Liststring>();
try
{
string URI = targetDir + "/" + SearchPattern;
System.Net.FtpWebRequest ftp = GetRequest(URI);
ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectory;
ftp.UsePassive = true;
ftp.UseBinary = true;
string str = GetStringResponse(ftp);
str = str.Replace("\r\n", "\r").TrimEnd(‘\r‘);
str = str.Replace("\n", "\r");
if (str != string.Empty)
result.AddRange(str.Split(‘\r‘));
return result;
}
catch { }
return null;
}
private static string GetStringResponse(FtpWebRequest ftp)
{
string result = "";
using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
{
long size = response.ContentLength;
using (Stream datastream = response.GetResponseStream())
{
using (StreamReader sr = new StreamReader(datastream, System.Text.Encoding.Default))
{
result = sr.ReadToEnd();
sr.Close();
}
datastream.Close();
}
response.Close();
}
return result;
}
public static void CheckAndMakeDir(string dirName)
{
if (string.IsNullOrEmpty(dirName))
{
return;
}
if (dirName.Contains("/") || dirName.Contains("\\"))
{
var str = dirName.Split(new Char[] { ‘/‘, ‘\\‘ });
if (str.Length == 0 || string.IsNullOrEmpty(str[0]))
{
return;
}
string dir = str[0] + "/";
if (!IsExistsFile(dir))
MakeDir(dir);
for (int i = 1; i )
{
if (string.IsNullOrEmpty(str[i]))
{
continue;
}
dir += (str[i] + "/");
if (!IsExistsFile(dir))
MakeDir(dir);
}
}
else
{
if (!IsExistsFile(dirName))
MakeDir(dirName);
}
}
///
/// 在ftp服务器上创建目录
///
/// 创建的目录名称
public static void MakeDir(string dirName)
{
try
{
System.Net.FtpWebRequest ftp = GetRequest(dirName);
ftp.Method = WebRequestMethods.Ftp.MakeDirectory;
FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
response.Close();
}
catch (Exception ex)
{
//MessageBox.Show(ex.Message);
}
}
///
/// 删除目录
///
/// 删除目录名称
public static bool delDir(string dirName)
{
try
{
System.Net.FtpWebRequest ftp = GetRequest(dirName);
ftp.Method = WebRequestMethods.Ftp.RemoveDirectory;
FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
response.Close();
return true;
}
catch (Exception ex)
{
return false;
}
}
///
/// 文件重命名
///
/// 当前目录名称
/// 重命名目录名称
public static bool Rename(string currentFilename, string newFilename)
{
try
{
FileInfo fileInf = new FileInfo(currentFilename);
System.Net.FtpWebRequest ftp = GetRequest(fileInf.Name);
ftp.Method = WebRequestMethods.Ftp.Rename;
ftp.RenameTo = newFilename;
FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
response.Close();
return true;
}
catch (Exception ex)
{
return false;
}
}
private static FtpWebRequest GetRequest(string dirName)
{
string url = "ftp://" + ConfigHepler.FtpServer + "/" + dirName;
//根据服务器信息FtpWebRequest创建类的对象
FtpWebRequest result = (FtpWebRequest)FtpWebRequest.Create(url);
//提供身份验证信息
result.Credentials = new System.Net.NetworkCredential(ConfigHepler.FtpUser, ConfigHepler.FtpPwd);
//设置请求完成之后是否保持到FTP服务器的控制连接,默认值为true
result.KeepAlive = false;
return result;
}
///
/// 判断ftp服务器上该目录是否存在
///
///
///
public static bool IsExistsFile(string dirName)
{
bool flag = true;
try
{
System.Net.FtpWebRequest ftp = GetRequest(dirName);
ftp.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
response.Close();
}
catch (Exception)
{
flag = false;
}
return flag;
}
// 获取文件大小
public static long GetFileSize(string ftpPath)
{
long size = 0;
if (string.IsNullOrEmpty(ftpPath)) return size;
try
{
string URI = ftpPath;
System.Net.FtpWebRequest ftp = GetRequest(URI);
ftp.Method = System.Net.WebRequestMethods.Ftp.GetFileSize;
ftp.UseBinary = true;
ftp.UsePassive = false;
using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
{
size = response.ContentLength;
}
}
catch (Exception)
{
}
return size;
}
}
///
/// 从配置文件获取配置信息
///
public class ConfigHepler
{
private static string m_FtpServer;
private static string m_FtpUser;
private static string m_FtpPwd;
///
/// ftp服务器
///
public static string FtpServer
{
get
{
if (string.IsNullOrEmpty(m_FtpServer))
{
string[] ftpConfigs = GlobalVars.FtpConfig.Split(new char[] { ‘;‘ });
if (ftpConfigs != null && ftpConfigs.Length > 0)
m_FtpServer = ftpConfigs[0];
}
return m_FtpServer;
}
}
///
/// ftp用户名
///
public static string FtpUser
{
get
{
if (string.IsNullOrEmpty(m_FtpUser))
{
string[] ftpConfigs = GlobalVars.FtpConfig.Split(new char[] { ‘;‘ });
if (ftpConfigs != null && ftpConfigs.Length > 1)
m_FtpUser = ftpConfigs[1];
}
return m_FtpUser;
}
}
///
/// ftp密码
///
public static string FtpPwd
{
get
{
if (string.IsNullOrEmpty(m_FtpPwd))
{
string[] ftpConfigs = GlobalVars.FtpConfig.Split(new char[] { ‘;‘ });
if (ftpConfigs != null && ftpConfigs.Length > 2)
m_FtpPwd = ftpConfigs[2];
}
return m_FtpPwd;
}
}
}
}
配置文件配置:
例子:
上传调用例子:
FileInfo fInfo = new FileInfo(txtDoc.Text);
//上传到ftp的完整目录,FTP目录+文件格式+日期+GUID+文件名+文件后缀
ftpPath = M_FTPDIRECTORY + m_Archives.DocType.Replace(".", "") + "/" + DateTime.Now.ToString("yyyyMMdd") + "/" + Guid.NewGuid().ToString() + "/" + m_Archives.DocName + m_Archives.DocType;
bool suc = FtpHelper.UploadFile(fInfo, ftpPath);
FTP文件上传以及获取ftp配置帮助类
标签:目录 move and cal code else rename common ebe
原文地址:http://www.cnblogs.com/qinyi173/p/7169195.html