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); } }
|