2

Upload form:

<form asp-action="Upload" asp-controller="Uploads" enctype="multipart/form-data">
<input type="file" name="file" maxlength="64" />
<button type="submit">Upload</button>

Controller/File upload:

public void Upload(IFormFile file){
    using (WebClient client = new WebClient())
    {
        client.Credentials = new NetworkCredential("xxxx", "xxxx");
        client.UploadFile("ftp://xxxx.xxxx.net.uk/web/wwwroot/images/", "STOR", file.FileName);
    }
}

Problem:

Getting error "Could not find file xxxx". I understand the issue is that it's trying to find the file as it is "C:\path-to-vs-files\examplePhoto.jpg" on the FTP server, which obviously doesn't exist. I've been looking at many questions/answers on here and I think I need some kind of FileStream read/write cod. But I'm not fully understanding the process at the moment.

1 Answer 1

8

Use IFormFile.CopyTo or IFormFile.OpenReadStream to access the contents of the uploaded file.

Combine that with WebClient.OpenWrite:

public void Upload(IFormFile file)
{
    string url = "ftp://ftp.example.com/remote/path/file.zip";
    using (WebClient client = new WebClient())
    {
        client.Credentials = new NetworkCredential("xxxx", "xxxx");
        using (var ftpStream = client.OpenWrite(url))
        {
            file.CopyTo(ftpStream);
        }
    }
}

Alternatively, use FtpWebRequest:

public void Upload(IFormFile file)
{
    string url = "ftp://ftp.example.com/remote/path/file.zip";
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
    request.Credentials = new NetworkCredential("username", "password");
    request.Method = WebRequestMethods.Ftp.UploadFile;  
    
    using (Stream ftpStream = request.GetRequestStream())
    {
        file.CopyTo(ftpStream);
    }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.