Dakle imam potrebu da podignem fajl na FTP server iz desktop aplikacije koju radim u C# 2005.
Kod je sledeci:
public void uploadFile(string LocalDir, string fileName, string RemoteDir)
{
try
{
lbByteDWNL.Text = String.Empty;
lbByteDWNL.Update();
fileName = fileName.Trim();
string fullFilePath = String.Format("ftp://{0}//{1}//{2}", "xxx.xxx.xxx.xxx", RemoteDir, fileName).Trim();
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(fullFilePath);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("username", "password");
StreamReader sourceStream = new StreamReader(LocalDir + fileName);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
MessageBox.Show(response.StatusDescription);
response.Close();
}
catch { MessageBox.Show("Neuspelo"); }
}
I to "radi", odnosno podigne fajl, ali se njegova duzina razlikuje od originala. Na primer, kada podignem jpg fajl od 62.682 bajta, on je gore 108.570 bajtova, i kada ga skinem nazad, ne moze da se otvori kao slika.
Koliko sam uspeo da skontam, problem je u liniji
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
ali i kada imesto UTF8 stavim druge vrednosti, ili default, isti je problem samo je velicina fajla razlicita, ali nikad nije kako treba.
Ima li neko neku ideju?