268 lines
9.8 KiB
C#
268 lines
9.8 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Configuration;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using System.Net;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace videoGather
|
|||
|
{
|
|||
|
public class FtpHelper
|
|||
|
{
|
|||
|
//基本设置
|
|||
|
//private static string ftppath = @"ftp://" + "10.13.1.36" + "/";
|
|||
|
private static string ftppath = ConfigurationManager.AppSettings["ftppath"];
|
|||
|
private static string username = ConfigurationManager.AppSettings["username"];
|
|||
|
private static string password = ConfigurationManager.AppSettings["password"];
|
|||
|
|
|||
|
//获取FTP上面的文件夹和文件
|
|||
|
public static string[] GetFolderAndFileList(string s)
|
|||
|
{
|
|||
|
string[] getfolderandfilelist;
|
|||
|
FtpWebRequest request;
|
|||
|
StringBuilder sb = new StringBuilder();
|
|||
|
try
|
|||
|
{
|
|||
|
request = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftppath));
|
|||
|
request.UseBinary = true;
|
|||
|
request.Credentials = new NetworkCredential(username, password);
|
|||
|
request.Method = WebRequestMethods.Ftp.ListDirectory;
|
|||
|
request.UseBinary = true;
|
|||
|
WebResponse response = request.GetResponse();
|
|||
|
StreamReader reader = new StreamReader(response.GetResponseStream());
|
|||
|
string line = reader.ReadLine();
|
|||
|
while (line != null)
|
|||
|
{
|
|||
|
sb.Append(line);
|
|||
|
sb.Append("\n");
|
|||
|
Console.WriteLine(line);
|
|||
|
line = reader.ReadLine();
|
|||
|
}
|
|||
|
sb.Remove(sb.ToString().LastIndexOf('\n'), 1);
|
|||
|
reader.Close();
|
|||
|
response.Close();
|
|||
|
return sb.ToString().Split('\n');
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
Console.WriteLine("获取FTP上面的文件夹和文件:" + ex.Message);
|
|||
|
getfolderandfilelist = null;
|
|||
|
return getfolderandfilelist;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//获取FTP上面的文件大小
|
|||
|
public static int GetFileSize(string fileName)
|
|||
|
{
|
|||
|
FtpWebRequest request;
|
|||
|
try
|
|||
|
{
|
|||
|
request = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftppath + fileName));
|
|||
|
request.UseBinary = true;
|
|||
|
request.Credentials = new NetworkCredential(username, password);
|
|||
|
request.Method = WebRequestMethods.Ftp.GetFileSize;
|
|||
|
int n = (int)request.GetResponse().ContentLength;
|
|||
|
return n;
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
Console.WriteLine("获取FTP上面的文件大小:" + ex.Message);
|
|||
|
return -1;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//FTP上传文件
|
|||
|
public static string FileUpLoad(string filePath, string objPath = "")
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
string url = ftppath;
|
|||
|
if (objPath != "")
|
|||
|
url += objPath + "/";
|
|||
|
try
|
|||
|
{
|
|||
|
FtpWebRequest request = null;
|
|||
|
try
|
|||
|
{
|
|||
|
FileInfo fi = new FileInfo(filePath);
|
|||
|
using (FileStream fs = fi.OpenRead())
|
|||
|
{
|
|||
|
request = (FtpWebRequest)FtpWebRequest.Create(new Uri(url + fi.Name));
|
|||
|
request.Credentials = new NetworkCredential(username, password);
|
|||
|
request.KeepAlive = false;
|
|||
|
request.Method = WebRequestMethods.Ftp.UploadFile;
|
|||
|
request.UseBinary = true;
|
|||
|
using (Stream stream = request.GetRequestStream())
|
|||
|
{
|
|||
|
int bufferLength = 5120;
|
|||
|
byte[] buffer = new byte[bufferLength];
|
|||
|
int i;
|
|||
|
while ((i = fs.Read(buffer, 0, bufferLength)) > 0)
|
|||
|
{
|
|||
|
stream.Write(buffer, 0, i);
|
|||
|
}
|
|||
|
return "上传成功";
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return ex.ToString();
|
|||
|
}
|
|||
|
finally
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return ex.ToString();
|
|||
|
}
|
|||
|
finally
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return ex.ToString();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//FTP上传文件
|
|||
|
public static string FileUpLoad(string filePath, string objPath ,string ftpFileName)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
string url = ftppath;
|
|||
|
if (objPath != "")
|
|||
|
url += objPath + "/";
|
|||
|
FtpWebRequest request = null;
|
|||
|
|
|||
|
FileInfo fi = new FileInfo(filePath);
|
|||
|
using (FileStream fs = fi.OpenRead())
|
|||
|
{
|
|||
|
request = (FtpWebRequest)FtpWebRequest.Create(new Uri(url + ftpFileName));
|
|||
|
request.Credentials = new NetworkCredential(username, password);
|
|||
|
request.KeepAlive = false;
|
|||
|
request.Method = WebRequestMethods.Ftp.UploadFile;
|
|||
|
request.UseBinary = true;
|
|||
|
request.UsePassive = true;//被动传输模式 设置
|
|||
|
|
|||
|
using (Stream stream = request.GetRequestStream())
|
|||
|
{
|
|||
|
int bufferLength = 5120;
|
|||
|
byte[] buffer = new byte[bufferLength];
|
|||
|
int i;
|
|||
|
while ((i = fs.Read(buffer, 0, bufferLength)) > 0)
|
|||
|
{
|
|||
|
stream.Write(buffer, 0, i);
|
|||
|
}
|
|||
|
return "上传成功";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return ex.ToString();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//FTP下载文件
|
|||
|
public static void FileDownLoad(string fileName)
|
|||
|
{
|
|||
|
FtpWebRequest request;
|
|||
|
try
|
|||
|
{
|
|||
|
string downloadPath = @"D:";
|
|||
|
FileStream fs = new FileStream(downloadPath + "\\" + fileName, FileMode.Create);
|
|||
|
request = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftppath + fileName));
|
|||
|
request.Method = WebRequestMethods.Ftp.DownloadFile;
|
|||
|
request.UseBinary = true;
|
|||
|
request.Credentials = new NetworkCredential(username, password);
|
|||
|
request.UsePassive = false;
|
|||
|
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
|
|||
|
Stream stream = response.GetResponseStream();
|
|||
|
int bufferLength = 5120;
|
|||
|
int i;
|
|||
|
byte[] buffer = new byte[bufferLength];
|
|||
|
i = stream.Read(buffer, 0, bufferLength);
|
|||
|
while (i > 0)
|
|||
|
{
|
|||
|
fs.Write(buffer, 0, i);
|
|||
|
i = stream.Read(buffer, 0, bufferLength);
|
|||
|
}
|
|||
|
stream.Close();
|
|||
|
fs.Close();
|
|||
|
response.Close();
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
Console.WriteLine("FTP下载文件:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//FTP删除文件
|
|||
|
public static void FileDelete(string fileName)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
string uri = ftppath + fileName;
|
|||
|
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
|
|||
|
request.UseBinary = true;
|
|||
|
request.Credentials = new NetworkCredential(username, password);
|
|||
|
request.KeepAlive = false;
|
|||
|
request.Method = WebRequestMethods.Ftp.DeleteFile;
|
|||
|
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
|
|||
|
response.Close();
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
Console.WriteLine("FTP删除文件:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//FTP新建目录,上一级须先存在
|
|||
|
public static void MakeDir(string dirName)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
string uri = ftppath + dirName;
|
|||
|
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
|
|||
|
request.UseBinary = true;
|
|||
|
request.Credentials = new NetworkCredential(username, password);
|
|||
|
request.Method = WebRequestMethods.Ftp.MakeDirectory;
|
|||
|
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
|
|||
|
response.Close();
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
Console.WriteLine("FTP新建目录:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//FTP删除目录,上一级须先存在
|
|||
|
public static void DelDir(string dirName)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
string uri = ftppath + dirName;
|
|||
|
FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
|
|||
|
reqFTP.Credentials = new NetworkCredential(username, password);
|
|||
|
reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;
|
|||
|
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
|
|||
|
response.Close();
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
Console.WriteLine("FTP删除目录:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|