将通过HTTP上传到ASP.NET的文件进一步上传到C#和SSH.NET中的SFTP服务器

将通过HTTP上传到ASP.NET的文件进一步上传到C#和SSH.NET中的SFTP服务器,c#,asp.net,.net,sftp,ssh.net,C#,Asp.net,.net,Sftp,Ssh.net,我正在使用SFTP和C#通过Renci SSH.NET库设置文件传输。 我被困在这个问题上了 每当我在ASP.NET核心程序中上载文件时,它都会发送该文件,但它会将其作为同名的空文件发送 public async Task<IActionResult> UploadFiles(List<IFormFile> files) { string host = "----"; string username = "----"; string passwor

我正在使用SFTP和C#通过Renci SSH.NET库设置文件传输。 我被困在这个问题上了

每当我在ASP.NET核心程序中上载文件时,它都会发送该文件,但它会将其作为同名的空文件发送

public async Task<IActionResult> UploadFiles(List<IFormFile> files)
{
    string host = "----";
    string username = "----";
    string password = "----";
    string Name = "";
    var Stream = new MemoryStream();
    List<MemoryStream> stream = new List<MemoryStream>();
    var connectionInfo = new Renci.SshNet.ConnectionInfo(host, username, new PasswordAuthenticationMethod(username, password));
    var sftp = new SftpClient(connectionInfo);
    sftp.Connect();
    sftp.ChangeDirectory("DIRECTORY");

    try
    {
        //Read the FileName and convert it to Byte array.
        foreach (var formFile in files)
        {
            var memoryStream = new MemoryStream();
            await formFile.CopyToAsync(memoryStream);
            Name = formFile.FileName;
            using (var uplfileStream = memoryStream)
            {
                sftp.UploadFile(uplfileStream, Name, null);
            }
        }
    }

    catch (WebException ex)
    {
        throw new Exception((ex.Response as FtpWebResponse).StatusDescription);
    }
    sftp.Disconnect();
    return View("Inbox");
}
公共异步任务上载文件(列表文件)
{
字符串host=“-----”;
字符串username=“-----”;
字符串password=“-----”;
字符串名称=”;
var Stream=newmemoryStream();
列表流=新列表();
var connectionInfo=new Renci.SshNet.connectionInfo(主机、用户名、新密码身份验证方法(用户名、密码));
var sftp=新的SftpClient(connectionInfo);
连接();
sftp.ChangeDirectory(“目录”);
尝试
{
//读取文件名并将其转换为字节数组。
foreach(文件中的var formFile)
{
var memoryStream=新的memoryStream();
等待formFile.CopyToAsync(memoryStream);
Name=formFile.FileName;
使用(var uplfileStream=memoryStream)
{
UploadFile(uplfileStream,Name,null);
}
}
}
捕获(WebException ex)
{
抛出新异常((例如响应为FtpWebResponse).StatusDescription);
}
sftp.Disconnect();
返回视图(“收件箱”);
}

我希望输出文件上载到服务器,但实际输出是上载到服务器的文件,其名称与我尝试上载的文件相同,但大小为0kb,即为空。

您的直接问题在此处得到解答:


尽管您不需要中间
内存流
(而且效率很低)

使用:


谢谢,在你贴出来之前我自己也收到了
using (var uplfileStream = formFile.OpenReadStream())
{
    sftp.UploadFile(uplfileStream, Name);
}