2016-04-02 12 views
1

Ich arbeite an einem Projekt, das .CSV-Dateien auf einen FTP-Server hochlädt. Das Programm erstellt Dateien erfolgreich zu einem Pfad auf meinem Computer, wo die Dateien Inhalt haben, wenn ich sie in Excel öffne.FTP-Upload lädt keine Inhalte von CSV-Dateien

Das Programm ist erfolgreich das Hochladen der Dateien auf den Server, und ich kann die Dateien auf dem Server sehen.

Das Problem ist, dass die .CSV-Dateien keinen Inhalt und füllt 0 Byte, wenn ich sie vom Server öffnen.

Weiß jemand, was ich falsch gemacht habe?

Vielen Dank im Voraus! Hier

ist der Code, dass ich auf den Server laden verwenden:

 private void sendFileBTN_Click(object sender, EventArgs e) 
    { 
     Upload("ftp://FTPServerName", "FTPBrugernavn", "FTPpassword", path + @"\fileNameToUpload.csv"); 
    } 

public void Upload(string ftpServer, string username, string password, string filename) 
    { 
     var Settingsdict = File.ReadAllLines(".\\" + "Settings" + ".csv").Select(l => l.Split(';').ToArray()).ToArray(); 
     FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServer + "/" + Settingsdict[4][1] + 
     Path.GetFileName(filename)); 
     request.Method = WebRequestMethods.Ftp.UploadFile; 

     request.Credentials = new NetworkCredential(username, password); 
     request.UsePassive = true; 
     request.UseBinary = false; 
     request.KeepAlive = true; 

     StreamReader sourceStream = new StreamReader("testfile.txt"); 
     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(); 
     FileStream stream = File.OpenRead(filename); 
     byte[] buffer = new byte[stream.Length]; 
     stream.Read(buffer, 0, buffer.Length); 
     stream.Close(); 
     response.Close(); 
    } 

Antwort

0

ich herausgefunden habe. Hier ist der Code, den ich stattdessen verwenden muss:

using (WebClient client = new WebClient()) 
      { 
       client.Credentials = new NetworkCredential(username, password); 
       client.UploadFile(ftpServer + "/" + Path.GetFileName(filepathAndName), filepathAndName); 
      }