C# FTP Server Dosyayı İndirmeden Göstermek, dersim ile C# Eğitim Setime devam ediyorum. Bu yazım C# İle FTP Üzerine İşlemler yazı serimin 9. yazısıdır.
C# FTP Server Dosyayı İndirmeden Göstermek
Önceki yazım olan C# FTP Server Dosya İndirmek yazımda ftp servere bağlanıp bir dosya indirmek hakkında bilgiler vermiştim. Bu yazımda C# ile bir ftp server ‘e bağlanıp dosyayı fiziksel olarak indirmeden gösterme işlemini göreceğiz.
string FTPDosyaYolu = "ftp:/88.88.88.88:8888//FTP_Files"; FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(FTPDosyaYolu); string username = "kullaniciadi"; string password = "şifre"; request.Credentials = new NetworkCredential(username, password); request.UsePassive = true; // pasif olarak kullanabilme request.UseBinary = true; // aktarım binary ile olacak request.KeepAlive = false; // sürekli açık tutma
Bağlantı bilgilerimizi bunlardı.
request.Method = WebRequestMethods.Ftp.DownloadFile;
Dosya download yani indirmek için gerekli metodumuz bu şekilde. Bu konumızda da metodumuz DownladFile olacak
Dosya indirme işlemi yaparken FileStream ve Stream sınıfını kullanarak yapacağız.
Stream sınıfını kullanabilmek için aşağıdaki kütüphaneyi eklememiz gerekiyor.
using System.IO;
Kodlarımızı verelim. Bu işlem için iki metodumuz var.
public static MemoryStream FTP_Dosya_Getir(string filePath) { UploadGetir(); try { FtpWebRequest request2 = (FtpWebRequest)FtpWebRequest.Create(filePath); request2.Method = WebRequestMethods.Ftp.DownloadFile; // Dosya indirmek için bu request metodu gerekiyor request2.Credentials = new NetworkCredential(username, password); request2.UsePassive = true; request2.UseBinary = true; request2.KeepAlive = false; FtpWebResponse response = (FtpWebResponse)request2.GetResponse(); Stream ftpStream = response.GetResponseStream(); return CopyToMemory(ftpStream); } catch (ArgumentException) { return null; } catch (UriFormatException) { return null; } catch (WebException) { return null; } }
Bu ilk metodumuzdu. Projemizde kullanacağımız metod budur. Diğer metodumuz ise,
private static MemoryStream CopyToMemory(Stream input) { MemoryStream ret = new MemoryStream(); byte[] buffer = new byte[8192]; int bytesRead; while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0) { ret.Write(buffer, 0, bytesRead); } ret.Position = 0; return ret; }
Bu işlemi biraz açıklamamız gerekirse;
İlk metodumuz, FTP üzerinden bir dosyaya bağlanıp MemoryStream ile RAM’a atar ve oradan gösterir.
İkinci metodumuz ise, FTP den Stream olarak alınan dosyayı MemoryStream’a dönüştürür
Nasıl kullanacağımıza gelirsek,
Örneğin indirmek istediğimiz dosya bir resim ise şu şekildedir.
Bitmap bmp = (Bitmap)Bitmap.FromStream(FTP_Upload_Download.FTP_Dosya_Getir(resimyol));
Benim FTP işlemlerim FTP_Upload_Download adı bir class dosyası içindedir. FTP_Dosya_Getir ise metodumuzun adıdır.
Peki indirmek istediğimiz dosya bir PDF ise , (Örnekte DevExpress PDF Viewer nesnesi kullanılmıştır.)
MemoryStream stream = FTP_Upload_Download.FTP_Dosya_Getir(path); pdfViewer1.LoadDocument(stream);
Gördüğünüz gibi, bu şekilde FTP ‘deki bir dosyayı indirmeden gösterimini yapabiliriz. Dosya bir word yada excel de olabilir. Bunları görüntüleyecek bir nesne ile kullanılabiliyor olması gerekir.
C# FTP Server Dosyayı İndirmeden Göstermek, dersimizde bu kadar arkadaşlar. Diğer derslerimizde görüşmek üzere…
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…
Takipte ve Sağlıcakla kalın.