C# FTP 작업 클래스
30215 단어 ftp
namespace Utility { public class FtpUpDown {
string ftpServerIP;
string ftpUserID;
string ftpPassword;
FtpWebRequest reqFTP;
private void Connect(String path)//연결 ftp {
//uri를 기반으로 FtpWebRequest 객체 만들기
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
//데이터 전송 유형 지정
reqFTP.UseBinary = true;
//ftp 사용자 이름 및 암호
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
}
public FtpUpDown(string ftpServerIP, string ftpUserID, string ftpPassword) { this.ftpServerIP = ftpServerIP;
this.ftpUserID = ftpUserID;
this.ftpPassword = ftpPassword; }
//모두 이걸로
private string[] GetFileList(string path,string WRMethods)//위의 코드는 ftp 서버에서 파일 목록 {string[] downloadFiles, StringBuilder result = new StringBuilder(), try {Connect(path),
reqFTP.Method = WRMethods;
WebResponse response = reqFTP.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);//중국어 파일 이름
string line = reader.ReadLine();
while (line != null) {
result.Append(line);
result.Append("");
line = reader.ReadLine();
}
//to remove the trailing ''
result.Remove(result.ToString().LastIndexOf(''), 1);
reader.Close();
response.Close();
return result.ToString().Split('');
}
catch (Exception ex) { Log.WriteError("Get FileList Error:"+ ex.Message); downloadFiles = null;
return downloadFiles; } }
public string[] GetFileList(string path)//위의 코드는 ftp 서버에서 파일 목록 {return GetFileList("ftp://"+ ftpServerIP+"/"+ path, WebRequestMethods.Ftp.ListDirectory)을 가져오는 방법을 예시합니다.public string[] GetFileList()//위의 코드는 ftp 서버에서 파일 목록 {return GetFileList("ftp://"+ ftpServerIP + "/", WebRequestMethods.Ftp.ListDirectory)을 가져오는 방법을 예시합니다.
public void Upload(string filename)//위의 코드는 ftp 서버에서 파일을 업로드하는 기능 {FileInfo fileInf = new FileInfo(filname);
string uri = "ftp://"+ ftpServerIP + "/"+ fileInf.Name;
Connect(uri);//잇닿다
//기본값은 true이며 연결이 닫히지 않음
//명령 이후 실행
reqFTP.KeepAlive = false;
//어떤 명령을 실행하는지 지정
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
//파일 업로드 시 서버 파일 크기 알림
reqFTP.ContentLength = fileInf.Length;//버퍼 크기를 kb int buffLength = 2048로 설정합니다.byte[] buff = new byte[buffLength];
int contentLen;
//업로드된 파일을 읽을 파일 흐름(System.IO.FileStream)을 엽니다.
FileStream fs = fileInf.OpenRead();
try {
//업로드된 파일을 흐름에 쓰기
Stream strm = reqFTP.GetRequestStream();
//파일 흐름을 읽을 때마다 kb
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) { Log.WriteError( "Upload Error:"+ ex.Message); }
}
public bool Download(string filePath,string fileName,out string errorinfo)/////에 있는 코드는 ftp 서버에서 파일을 다운로드하는 기능을 수행합니다.
string newFileName = filePath + "\\"+ onlyFileName;
if (File.Exists(newFileName)) {
errorinfo = string.Format ("로컬 파일 {0} 이 (가) 이미 존재합니다. 다운로드할 수 없습니다."newFileName)return false; } string url = "ftp://"+ ftpServerIP + "/"+ fileName; Connect(url);//reqFTP를 연결합니다.Credentials = new NetworkCredential(ftpUserID, ftpPassword); FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream ftpStream = response.GetResponseStream(); long cl = response.ContentLength; int bufferSize = 2048; int readCount; byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize);
FileStream outputStream = new FileStream(newFileName, FileMode.Create); while (readCount > 0) { outputStream.Write(buffer, 0, readCount); readCount = ftpStream.Read(buffer, 0, bufferSize); } ftpStream.Close(); outputStream.Close(); response.Close();
errorinfo = "";
return true;
}
catch(Exception ex) {errorinfo = string.Format("{0}로 인해 다운로드할 수 없음", ex.Message);
return false;
}
}
//파일 삭제
public void DeleteFileName(string fileName) { try { FileInfo fileInf = new FileInfo(fileName);
string uri = "ftp://"+ ftpServerIP + "/"+ fileInf.Name;
Connect(uri);//잇닿다
//기본값은 true이며 연결이 닫히지 않음
//명령 이후 실행
reqFTP.KeepAlive = false;
//어떤 명령을 실행하는지 지정
reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); response.Close();
}
catch(Exception ex) {Log.WriteError(오류 제거: + ex.Message);
}
//디렉토리 만들기
public void MakeDir(string dirName) { try { string uri = "ftp://"+ ftpServerIP + "/"+ dirName;
Connect(uri);//잇닿다
reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
response.Close();
}
catch(Exception ex) {Log.WriteError("디렉터리 만들기 오류:"+ ex.Message);
}
//디렉토리 삭제
public void delDir(string dirName) { try { string uri = "ftp://"+ ftpServerIP + "/"+ dirName;
Connect(uri);//잇닿다
reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
response.Close();
}
catch(Exception ex) {Log.WriteError("디렉토리 오류 삭제:"+ ex.Message);
}
//파일 크기 가져오기
public long GetFileSize(string filename) {
long fileSize = 0;
try {
FileInfo fileInf = new FileInfo(filename);
string uri = "ftp://"+ ftpServerIP + "/"+ fileInf.Name;
Connect(uri);//잇닿다
reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
fileSize = response.ContentLength;
response.Close();
}
catch(Exception ex) {Log.WriteError("파일 크기 가져오기 오류:"+ ex.Message);
return fileSize;
}
//파일 이름 변경
public void Rename(string current Filename, string new Filename)는 {try {File file Inf = new FileInfo(currentFilename), string uri ='ftp:/'+ ftpServServIP+'/'+ fileInf.Name;Connect(ur);;/연결 reqFTP.Method = WeqFTP.Meththththd=WerefififileInInInfififififififififififififififififififififififififififififine;;;;;;;/////////연결연결연결requreqFFFFFFFnse)reqFTP.GetResponse(); response.Close();
}
catch(Exception ex) {Log.WriteError(파일 이름 변경 오류: + ex.Message);
}//파일 읽기
퍼블릭 Stream ReadFile(string file Name) {try {string url ='ftp:/'+ ftpServerIP+'/'+ fileName; 커넥트(url),//연결 리qFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword), FtpWebResponse respponse =(FtpWWWWebResponnese reqFTPP.Credentials = 새 FFTPP.CretReReReReReRespponsetReReReRespponse:::RetPP.RetReReReponsetReReponsem n ftpStream;}
catch(Exception ex) {Log.WriteError(파일 읽기 오류: + ex.Message), return null;}
}
//파일 명료화
public string[] GetFilesDetailList() {
return GetFileList("ftp://"+ ftpServerIP + "/", WebRequestMethods.Ftp.ListDirectoryDetails);
}
//파일 명료화
public string[] GetFilesDetailList(string path) {
return GetFileList("ftp://"+ ftpServerIP + "/"+ path, WebRequestMethods.Ftp.ListDirectoryDetails);
}
//파일 존재 검사 public bool fileCheckExist(string file Name) {bool success= false, FtpWebResponse response recist(string fices = false, FtpWeb Res filesponse response rese reser reader reader reader = null; try {string url ='ftp://'+ ftpSerververIP +'/'/'+'/''/'+'/'+'/'+ fileNameName; Connenenect(urName;Connect(ur),//연결 연결 reqFFFFFFFTFTPFT.GetResponse(); reader = new StreamReader(response.GetResponseStream()); string line = reader.ReadLine(); if (line != null) { success = true; } } catch (Exception) { success = false; } finally { if (reader != null) { reader.Close(); }
if (response != null) { response.Close(); } } return success; } }}
익명
ftp 로connect,ftp_login 익명으로 FTP에 로그인한 경우 사용자 이름은 anonymous 암호: 비어 있음
FTP 가져오기 파일 경로 및 하위 디렉토리 경로
1 /// <summary>
2 /// ftp
3 /// </summary>
4 /// <param name="RequedstPath"></param>
5 /// <returns></returns>
6 public static List<string> GetDirctory(string RequedstPath)
7 {
8 List<string> strs = new List<string>();
9 try
10 {
11 string uri = path + RequedstPath; // path
12 FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
13 // ftp
14 reqFTP.Credentials = new NetworkCredential(username, password);
15 reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
16 WebResponse response = reqFTP.GetResponse();
17 StreamReader reader = new StreamReader(response.GetResponseStream());//
18
19 string line = reader.ReadLine();
20 while (line != null)
21 {
22 if (line.Contains("<DIR>"))
23 {
24 string msg = line.Substring(line.LastIndexOf("<DIR>")+5).Trim();
25 strs.Add(msg);
26 }
27 line = reader.ReadLine();
28 }
29 reader.Close();
30 response.Close();
31 return strs;
32 }
33 catch (Exception ex)
34 {
35 Console.WriteLine(" :" + ex.Message);
36 }
37 return strs;
38 }
39
40 /// <summary>
41 /// ftp
42 /// </summary>
43 /// <param name="RequedstPath"> </param>
44 /// <returns></returns>
45 public static List<string> GetFile(string RequedstPath)
46 {
47 List<string> strs = new List<string>();
48 try
49 {
50 string uri = path + RequedstPath; // path
51 FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
52 // ftp
53 reqFTP.Credentials = new NetworkCredential(username, password);
54 reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
55 WebResponse response = reqFTP.GetResponse();
56 StreamReader reader = new StreamReader(response.GetResponseStream());//
57
58 string line = reader.ReadLine();
59 while (line != null)
60 {
61 if (!line.Contains("<DIR>"))
62 {
63 string msg = line.Substring(39).Trim();
64 strs.Add(msg);
65 Console.WriteLine(msg);
66 }
67 line = reader.ReadLine();
68 }
69 reader.Close();
70 response.Close();
71 return strs;
72 }
73 catch (Exception ex)
74 {
75 Console.WriteLine(" :" + ex.Message);
76 }
77 return strs;
78 }
파일과 디렉터리를 가져오는 방법을 알면, 나머지는 귀속일 뿐이다.이것은 매우 간단해서 설명하지 않겠다.귀환은 재미있지만 효율이 낮다.
FTP 로그인
|원두:358
Ron Ngai
|2012-07-25 18:28
/// <summary>
/// ftp
/// </summary>
/// <param name="RequedstPath"></param>
/// <returns></returns>
public static List<string> GetDirctory(string RequedstPath)
{
List<string> strs = new List<string>();
try
{
string uri = path + RequedstPath; // path
FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
// ftp
reqFTP.Credentials = new NetworkCredential(username, password);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
WebResponse response = reqFTP.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());//
string line = reader.ReadLine();
while (line != null)
{
if (line.Contains("<DIR>"))
{
string msg = line.Substring(line.LastIndexOf("<DIR>")+5).Trim();
strs.Add(msg);
}
line = reader.ReadLine();
}
reader.Close();
response.Close();
return strs;
}
catch (Exception ex)
{
Console.WriteLine(" :" + ex.Message);
}
return strs;
}
/// <summary>
/// ftp
/// </summary>
/// <param name="RequedstPath"> </param>
/// <returns></returns>
public static List<string> GetFile(string RequedstPath)
{
List<string> strs = new List<string>();
try
{
string uri = path + RequedstPath; // path
FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
// ftp
reqFTP.Credentials = new NetworkCredential(username, password);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
WebResponse response = reqFTP.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());//
string line = reader.ReadLine();
while (line != null)
{
if (!line.Contains("<DIR>"))
{
string msg = line.Substring(39).Trim();
strs.Add(msg);
Console.WriteLine(msg);
}
line = reader.ReadLine();
}
reader.Close();
response.Close();
return strs;
}
catch (Exception ex)
{
Console.WriteLine(" :" + ex.Message);
}
return strs;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ruby ftp 봉인 실례 상세 설명ruby ftp 봉인 실례 상세 설명 최근에 루비로 Net::FTP의 도구 클래스를 봉인했습니다. # 지정된 형식의 파일 이름 목록 가져오기 # 예: source = "test/*.txt" # 반환: [source/...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.