C# ftp 上传文件如果服务器文件夹不存在就创建文件
要在C#中使用FTP上传文件并在服务器上创建文件夹(如果不存在),可以使用FtpWebRequest类来执行此操作。
下面是一个示例代码,演示了如何通过FTP上传文件并在服务器上创建文件夹(如果不存在):
public void UploadFileToFtp(string ftpUrl, string filePath)
{
// 创建FTP请求对象
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl);
request.Method = WebRequestMethods.Ftp.UploadFile;
// 设置FTP凭据
request.Credentials = new NetworkCredential("username", "password");
// 获取要上传的文件名
string fileName = Path.GetFileName(filePath);
// 获取要创建的目录路径
string directoryPath = Path.GetDirectoryName(ftpUrl);
try
{
// 创建目录
CreateFtpDirectory(directoryPath);
// 读取要上传的文件
byte[] fileContents = File.ReadAllBytes(filePath);
// 设置请求的内容长度
request.ContentLength = fileContents.Length;
// 获取请求的输入流
using (Stream requestStream = request.GetRequestStream())
{
// 将文件内容写入请求的输入流
requestStream.Write(fileContents, 0, fileContents.Length);
}
// 执行FTP请求
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
Console.WriteLine("上传成功!服务器响应:{0}", response.StatusDescription);
}
}
catch (WebException ex)
{
Console.WriteLine("上传失败!错误消息:{0}", ex.Message);
}
}
public void CreateFtpDirectory(string directoryPath)
{
// 创建FTP请求对象
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(directoryPath);
request.Method = WebRequestMethods.Ftp.MakeDirectory;
// 设置FTP凭据
request.Credentials = new NetworkCredential("username", "password");
try
{
// 执行FTP请求
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
Console.WriteLine("目录创建成功!服务器响应:{0}", response.StatusDescription);
}
}
catch (WebException ex)
{
// 如果目录已存在,则忽略错误
if (((FtpWebResponse)ex.Response).StatusCode != FtpStatusCode.ActionNotTakenFileUnavailable)
{
Console.WriteLine("目录创建失败!错误消息:{0}", ex.Message);
}
}
}
在上面的代码中,UploadFileToFtp方法用于上传文件到FTP服务器,CreateFtpDirectory方法用于创建FTP目录。你需要将ftpUrl和filePath参数替换为实际的FTP服务器地址和要上传的文件路径。同时,你需要将username和password替换为实际的FTP凭据。
注意:在使用CreateFtpDirectory方法创建目录时,如果目录已经存在,会抛出一个WebException异常。你可以通过检查FtpWebResponse的StatusCode属性来判断目录是否已存在。如果StatusCode为ActionNotTakenFileUnavailable,表示目录已存在,可以忽略错误
原文地址: https://www.cveoy.top/t/topic/hTqC 著作权归作者所有。请勿转载和采集!