下面是一个示例代码,演示了如何将ASP.Net Core中的FormFile对象上传到FTP服务器。
public async Task UploadFileToFTP(IFormFile file, string ftpHost, string ftpUsername, string ftpPassword, string ftpDirectory)
{
try
{
// 创建FTP请求
FtpWebRequest request = (FtpWebRequest)WebRequest.Create($"{ftpHost}/{ftpDirectory}/{file.FileName}");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
// 获取文件流
using (Stream ftpStream = request.GetRequestStream())
{
// 将FormFile对象的内容复制到文件流中
await file.CopyToAsync(ftpStream);
}
// 获取FTP服务器的响应
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
Console.WriteLine($"上传文件到FTP服务器的响应: {response.StatusCode}");
}
return true;
}
catch (Exception ex)
{
Console.WriteLine($"上传文件到FTP服务器时发生错误: {ex.Message}");
return false;
}
}
使用示例:
// 获取上传的文件
IFormFile file = Request.Form.Files[0];
// FTP服务器的配置信息
string ftpHost = "ftp.example.com";
string ftpUsername = "ftp_username";
string ftpPassword = "ftp_password";
string ftpDirectory = "upload";
// 调用上传方法
bool success = await UploadFileToFTP(file, ftpHost, ftpUsername, ftpPassword, ftpDirectory);
if (success)
{
Console.WriteLine("文件已成功上传到FTP服务器!");
}
else
{
Console.WriteLine("上传文件到FTP服务器失败!");
}
请注意,上述代码中使用的UploadFileToFTP
方法是异步的。如果不需要异步操作,可以将Task
更改为bool
,并将await
关键字从代码中删除。