如何在 C# 中使用 FTP 上传文件
生活随笔
收集整理的這篇文章主要介紹了
如何在 C# 中使用 FTP 上传文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
咨詢區
webvision:
我嘗試用 C# 上傳一個文件到 FTP-Server 上,文件已顯示上傳成功但顯示 0Byte,我的代碼大概是這樣的。
private?void?button2_Click(object?sender,?EventArgs?e) {var?dirPath?=?@"C:/Documents?and?Settings/sander.GD/Bureaublad/test/";ftp?ftpClient?=?new?ftp("ftp://example.com/",?"username",?"password");string[]?files?=?Directory.GetFiles(dirPath,"*.*");var?uploadPath?=?"/httpdocs/album";foreach?(string?file?in?files){ftpClient.createDirectory("/test");ftpClient.upload(uploadPath?+?"/"?+?Path.GetFileName(file),?file);}if?(string.IsNullOrEmpty(txtnaam.Text)){MessageBox.Show("Gelieve?uw?naam?in?te?geven?!");} }回答區
cdev:
很簡單,在 .NET5 中可以這么實現。
async?Task<FtpStatusCode>?FtpFileUploadAsync(string?ftpUrl,?string?userName,?string?password,?string?filePath) {FtpWebRequest?request?=?(FtpWebRequest)WebRequest.Create(ftpUrl);request.Method?=?WebRequestMethods.Ftp.UploadFile;request.Credentials?=?new?NetworkCredential(userName,?password);using?(FileStream?fileStream?=?new?FileStream(filePath,?FileMode.Open,?FileAccess.Read))using?(Stream?requestStream?=?request.GetRequestStream()){await?fileStream.CopyToAsync(requestStream);}using?(FtpWebResponse?response?=?(FtpWebResponse)await?request.GetResponseAsync()){return?response.StatusCode;} }在 .NET Framework 中可以這么實現。
public?void?UploadFtpFile(string?folderName,?string?fileName) {FtpWebRequest?request;string?folderName;?string?fileName;string?absoluteFileName?=?Path.GetFileName(fileName);request?=?WebRequest.Create(new?Uri(string.Format(@"ftp://{0}/{1}/{2}",?"127.0.0.1",?folderName,?absoluteFileName)))?as?FtpWebRequest;request.Method?=?WebRequestMethods.Ftp.UploadFile;request.UseBinary?=?1;request.UsePassive?=?1;request.KeepAlive?=?1;request.Credentials?=??new?NetworkCredential(user,?pass);request.ConnectionGroupName?=?"group";?using?(FileStream?fs?=?File.OpenRead(fileName)){byte[]?buffer?=?new?byte[fs.Length];fs.Read(buffer,?0,?buffer.Length);fs.Close();Stream?requestStream?=?request.GetRequestStream();requestStream.Write(buffer,?0,?buffer.Length);requestStream.Flush();requestStream.Close();} }然后像下面這樣使用。
UploadFtpFile("testFolder",?"E:\\filesToUpload\\test.img");Saeb Amini:
對于文件上傳,為啥要對底層的 WebRequest 進行封裝造輪子呢?你完全可以使用 WebClient 實現 FTP 的文件上傳,參考如下代碼:
using?(var?client?=?new?WebClient()) {client.Credentials?=?new?NetworkCredential(ftpUsername,?ftpPassword);client.UploadFile("ftp://host/path.zip",?WebRequestMethods.Ftp.UploadFile,?localFile); }點評區
居然用 WebClient 就能輕松的實現文件上傳,Saeb Amini 大佬🐂👃。
總結
以上是生活随笔為你收集整理的如何在 C# 中使用 FTP 上传文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软 Ignite 大会 PowerBI
- 下一篇: 如何通过 C# 自动捕获一个文件的变更?