Pythontr

husonet | Tarih: 21.11.2016

C# ASP.NET ftp üzerinden dosya nasıl yüklenir?

C# ASP.NET ftp üzerinden dosya yüklenmesi

Bazı durumlarda dosya yükleme işlemi gerçekleşen ve birden fazla sunucu bulunan durumlarda sunucularda yük dağılımını dengeleyen balancer(dengeleyici)'lar bulunmaktadır.

Dengeleyiciler yükleme yapıldığı anda hangi sunucu uygun oldugunu kısacası dosya yüklemenin hangi sunucuya yapılacağını belirlemektedir.



Bu durumda yükleme işlemini ftp üzerinden gerçekleştirmekl daha sağlıklıdır. Çünkü yüklenen dosyanın okuma sırasında her seferinden ulaşılması adına ftp'ye de yazılması okuma işlemini doğru bir şekilde gerçekleştirilir.


C# ASP.NET 'de ftp üzerinden dosya yükleme nasıl yapılır?


Yükleme yapılan kodda ilk olarak dosyaya yazılır. Sonrasında ftp üzerine de yazılması aşağıdaki şekilde olur.



String filename = file.FileName;
String fileExt = Path.GetExtension(filename);
filename = Path.GetFileNameWithoutExtension(filename);
filename = filename + random + fileExt;
int byteCount = file.ContentLength;
String fullname = sec.security(System.IO.Path.Combine(context.Server.MapPath("~") + "/upload/", filename));
file.SaveAs(fullname);

byte[] fileBytes = null;
using (StreamReader fileStream = new StreamReader(fullfilename))
{
fileBytes = Encoding.UTF8.GetBytes(fileStream.ReadToEnd());
fileStream.Close();
}
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(host + ":" + port + "/" + ftpFolder + "/" + filename);
request.Method = WebRequestMethods.Ftp.UploadFile;


//Enter FTP Server credentials.
request.Credentials = new NetworkCredential( user , pass);
StreamReader sourceStream = new StreamReader(fullname);

request.ContentLength = fileBytes.Length;

request.UsePassive = true;
request.UseBinary = true;
request.ServicePoint.ConnectionLimit = fileBytes.Length;
if (ssl == "false")
request.EnableSsl = false;
else if(ssl=="true")
request.EnableSsl = true;

Stream requestStream = request.GetRequestStream();
requestStream.Write(fileBytes, 0, fileBytes.Length);
requestStream.Close();

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

Verilerin web.config dosyasına gömülüp oradan okunması sağlamak istersek, web.config dosyasına aşağıdkai eklemeleri yaparız.



<appSettings>
<add key="HOST" value="" />
<add key="USER" value="" />
<add key="PASS" value="" />
<add key="PORT" value="" />
<add key="SSL" value="" />
<add key="FTPFOLDER" value="" />
</appSettings>


web.config dosyasından veri okuma da aşağıdaki şekilde sağlanır.




string host = ConfigurationManager.AppSettings["HOST"];
string port = ConfigurationManager.AppSettings["PORT"];
string user = ConfigurationManager.AppSettings["USER"];
string pass = ConfigurationManager.AppSettings["PAS"];
string ssl = ConfigurationManager.AppSettings["SSL"];
string ftpFolder = ConfigurationManager.AppSettings["FTPFOLDER"];

Kolay gelsin.