1.通过用FTP进行上传文件,首先要实现建立FTP连接,一般建立FTP连接,需要知道FTP配置有关的信息。一般要在Bean中建立一个ServiceFileInfo.cs文件进行记录,一般需要FTP地址、登录用户名和登录密码。然后通过其他页面进行访问读取。代码样式如下:
1
2
3
4
5
6
7
8
|
class ServiceFileInfo { // service1 public static string txtFilePath = @"ftp://12.128.128.01/FileName/" ; //userid & password public static string txtUID = "username" ; public static string txtPWD = "password" ; } |
2.通过主方法读取Bean文件下面的的ServiceFileInfo.cs文件的信息,去实现建立FTP连接。这里还需要清楚的知道你上传文件的路径(Path)和文件名称(FileName)。根据这些信息主方法去调用写着Bean中的另外一个ftpOperation.cs 文件(这个.cs文件中主要写一些关于FTP的操作方法),进行FTP访问操作。
- 主方法调用FTP操作代码
1
|
ExecutionResult exeRes = this .ftpOperation.UploadFile(textFilePath, txtUID, txtPWD, Path + "/" + FileName + ".txt" ); //.txt为文件的后缀名 |
- Bean文件中ftpOperation.cs文件关于FTP操作的方法
1
2
3
4
5
6
7
8
9
10
|
public ExecutionResult UploadFile( string vIMSPath, string vUID, string vPassword, string vLocalPath) { ExecutionResult result = new ExecutionResult(); result = connectState(vIMSPath, vUID, vPassword, vLocalPath); //调用下面代码方法 if (result.Status) { File.Delete(vLocalPath); } return result; } |
- connectState()方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public static ExecutionResult connectState( string vIMSPath, string vUID, string vPassword, string fileName) { string operater = "" ; bool Flag = false ; ExecutionResult result; result = new ExecutionResult(); lock (lockObj) { try { operater = "Connet to FTP" ; FTPOperation ftp = new FTPOperation( new Uri(vIMSPath), vUID, vPassword); operater = "Upload file" ; Flag = ftp.UploadFile(fileName, Path.GetFileName(fileName), true ); if (Flag) { result.Status = true ; result.Message = "Send to server OK" ; } } catch (Exception ex) { result.Status = false ; result.Anything = "Mail" ; result.Message = operater + ":" + ex.Message; } } return result; } |
- UploadFile()方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
public bool UploadFile( string LocalFullPath, string RemoteFileName, bool OverWriteRemoteFile) { bool result; try { bool flag = ! this .IsValidFileChars(RemoteFileName) || ! this .IsValidFileChars(Path.GetFileName(LocalFullPath)) || ! this .IsValidPathChars(Path.GetDirectoryName(LocalFullPath)); if (flag) { throw new Exception( "非法文件名或目录名!" ); } bool flag2 = File.Exists(LocalFullPath); if (!flag2) { throw new Exception( "本地文件不存在!" ); } FileStream fileStream = new FileStream(LocalFullPath, FileMode.Open, FileAccess.Read); byte [] array = new byte [fileStream.Length]; fileStream.Read(array, 0, ( int )fileStream.Length); fileStream.Close(); result = this .UploadFile(array, RemoteFileName, OverWriteRemoteFile); } catch (Exception ex) { this .ErrorMsg = ex.ToString(); throw ex; } return result; } public bool UploadFile( byte [] FileBytes, string RemoteFileName) { bool flag = ! this .IsValidFileChars(RemoteFileName); if (flag) { throw new Exception( "非法文件名或目录名!" ); } return this .UploadFile(FileBytes, RemoteFileName, false ); } public bool UploadFile( byte [] FileBytes, string RemoteFileName, bool OverWriteRemoteFile) { bool result; try { bool flag = ! this .IsValidFileChars(RemoteFileName); if (flag) { throw new Exception( "非法文件名!" ); } bool flag2 = !OverWriteRemoteFile && this .FileExist(RemoteFileName); if (flag2) { throw new Exception( "FTP服务上面已经存在同名文件!" ); } this .Response = this .Open( new Uri( this .Uri.ToString() + RemoteFileName), "STOR" ); Stream requestStream = this .Request.GetRequestStream(); MemoryStream memoryStream = new MemoryStream(FileBytes); byte [] array = new byte [1024]; int num = 0; for (;;) { int num2 = memoryStream.Read(array, 0, array.Length); bool flag3 = num2 == 0; if (flag3) { break ; } num += num2; requestStream.Write(array, 0, num2); } requestStream.Close(); this .Response = (FtpWebResponse) this .Request.GetResponse(); memoryStream.Close(); memoryStream.Dispose(); FileBytes = null ; result = true ; } catch (Exception ex) { this .ErrorMsg = ex.ToString(); throw ex; } return result; } |
以上就是C# 实现FTP上传资料的示例的详细内容,更多关于c# ftp上传的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/wml-it/p/12881936.html