🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / .Net Core Web Api / Ftp dosya kaydetme upload file http ftp server

1-) .Net 6 Core Web Api  - Ftp dosya kaydetme upload file http ftp server

 

1- dosya kaydetme

 

 

using Microsoft.AspNetCore.Mvc;

using System.Net;

 

namespace KaliteApi.Controllers

{

    [Route("api/[controller]")]

    [ApiController]

    public class FileController : ControllerBase

    {

 

        [Route("postFile")]

        [HttpPost]

        public IActionResult postFile(IFormFile file)

        {

            string url = "ftp://" + "111.53.103.11:32" + "/" + file.FileName;

 

            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);

            request.Credentials = new NetworkCredential("k.ad", "şifre");

            request.Method = WebRequestMethods.Ftp.UploadFile;

 

            using (Stream ftpStream = request.GetRequestStream())

            {

                file.CopyTo(ftpStream);

            }

            return Ok();

        }

    }

}

 

 

 

        

2- klasör oluşturma

 

  private bool CreateFTPDirectory(string directory)

        {

            try

            {

                //create the directory

                string url = "ftp://" + "111.53.103.11:32" + "/" + directory;

 

                FtpWebRequest requestDir = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));

                requestDir.Method = WebRequestMethods.Ftp.MakeDirectory;

                requestDir.Credentials = new NetworkCredential("k.ad", "şifre");

                requestDir.UsePassive = true;

                requestDir.UseBinary = true;

                requestDir.KeepAlive = false;

                FtpWebResponse response = (FtpWebResponse)requestDir.GetResponse();

                Stream ftpStream = response.GetResponseStream();

 

                ftpStream.Close();

                response.Close();

 

                return true;

            }

            catch (WebException ex)

            {

                FtpWebResponse response = (FtpWebResponse)ex.Response;

                if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)

                {

                    response.Close();

                    return true;

                }

                else

                {

                    response.Close();

                    return false;

                }

            }

        }

 

kaynak : https://stackoverflow.com/questions/2769137/how-to-check-if-an-ftp-directory-exists

kaynak : https://dotnetglance.com/Article/107/Upload-and-Download-file-From-FTP-Server-using-c-

 

 

3- dosya silme

 

 

[Route("DeleteFile")]

        [HttpPost]

        public IActionResult DeleteFile()

        {

            string url = "ftp://" + "111.53.103.11:2121/hata.png";

 

            FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));

            request.Credentials = new NetworkCredential("Administrator", "x2GK2aHC8QAnZf");

            request.KeepAlive = true;

            request.UseBinary = true;

            request.UsePassive = true;

            request.Method = WebRequestMethods.Ftp.DeleteFile;

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

            response.Close();

            return Ok("silindi");

        }

 

 

4- dosya indirme

 

 

  [Route("downloadFile")]

        [HttpPost]

        public Stream downloadFile()

        {

            string url = "ftp://" + "111.53.103.11:31/hata.png";

 

            FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));

 

            request.Credentials = new NetworkCredential("k.ad", "şifre");

            request.Method = WebRequestMethods.Ftp.DownloadFile;

                Stream reader = request.GetResponse().GetResponseStream();

                return reader;

        }

 

 

 

4- dosya indirme 2 sanki bu daha iyi

 

private static byte[] DownloadFileFromFtp(string ftpUrl, string username, string password)

{

    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(ftpUrl));

    request.Credentials = new NetworkCredential(username, password);

    request.Method = WebRequestMethods.Ftp.DownloadFile;

 

    using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())

    using (Stream ftpStream = response.GetResponseStream())

    using (MemoryStream memoryStream = new MemoryStream())

    {

        byte[] buffer = new byte[1024];

        int bytesRead;

        while ((bytesRead = ftpStream.Read(buffer, 0, buffer.Length)) > 0)

        {

            memoryStream.Write(buffer, 0, bytesRead);

        }

 

        return memoryStream.ToArray();

    }

}

 

 

 [HttpPost]

 [Route("downloadFile")]

 public IActionResult downloadFile()

 {

     string ftpUrl = "ftp://" + "111.53.103.11:2121/hata.png";

     string ftpUsername = "admin";

     string ftpPassword = "şifre";

 

     try

     {

         var fileContents = DownloadFileFromFtp(ftpUrl, ftpUsername, ftpPassword);

 

         if (fileContents == null)

         {

             return NotFound("Dosya bulunamadı veya erişim izniniz yok.");

         }

         return File(fileContents, "application/octet-stream", "hata.png");

     }

     catch (WebException ex)

     {

         if (ex.Response is FtpWebResponse response && response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)

         {

             return NotFound("Dosya bulunamadı veya erişim izniniz yok.");

         }

         else

         {

             return BadRequest("Dosya indirilirken bir hata oluştu: " + ex.Message);

         }

     }

     catch (Exception ex)

     {

         return BadRequest("Beklenmeyen bir hata oluştu: " + ex.Message);

     }

 }

 

 

 

 2023 Kasım 15 Çarşamba
 414