2012-04-01 9 views
1

Ich versuche, Dateien über FTP mit dem folgenden Skript hochzuladen. Die Datei wird auf den FTP-Server hochgeladen, der Dateiname heißt jedoch immer Bilder und hat keine Erweiterung.FTP-Datei-Upload-Problem - Fehlender Dateiname

Es ist wahrscheinlich etwas einfaches, das ich vermisst habe, aber wenn jemand weiß, wo es schief geht, wäre das Hilfe.

public static string _FTPusername = "xx"; 
public static string _FTPPassword = "xxxxx"; 
public static string _FTPServerAddress = "cp.domainname.co.uk"; 
public static string _ftpurl = "ftp://cp.domainname.co.uk/Images"; //= "ftp://cp.domainname.co.uk/Images"; 

try 
{ 
    string filename = Path.GetFileName(source); 
    string ftpfullpath = ConnectionDetails._ftpurl; 
    FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath); 
    ftp.Credentials = new NetworkCredential(ConnectionDetails._FTPusername, ConnectionDetails._FTPPassword); 

    ftp.KeepAlive = true; 
    ftp.UseBinary = true; 
    ftp.Method = WebRequestMethods.Ftp.UploadFile; 

    FileStream fs = File.OpenRead(source); 
    byte[] buffer = new byte[fs.Length]; 
    fs.Read(buffer, 0, buffer.Length); 
    fs.Close(); 

    Stream ftpstream = ftp.GetRequestStream(); 
    ftpstream.Write(buffer, 0, buffer.Length); 
    ftpstream.Close(); 
} 
catch(Exception ex) 
{ 
    throw ex; 
} 
+2

Ich sehe nicht, dass Sie Ihre Dateinamen Variable überall verwenden? –

Antwort

0

Das Problem gefunden - war ein einfacher Schuljungenfehler.

public static string _ftpurl = "cp.domainname.co.uk/Images

Sollte waren:

public static string _ftpurl = "cp.domainname.co.uk

+0

Ich sagte Ihnen, Sie könnten FTP manuell in das Verzeichnis Images hochladen? Es hört sich für mich so an, als hättest du dir eine verschwendete Anstrengung ersparen können, indem du ein bisschen weniger schlampig warst. Schön, dass Sie am Ende einen Fehler gefunden haben. –

0

Das Problem scheint diese drei Linien zu sein:

string filename = Path.GetFileName(source); 
string ftpfullpath = ConnectionDetails._ftpurl; 
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath); 

Sie nicht den Dateinamen Variable verwenden, so dass der Pfad, der

ftp://cp.domainname.co.uk/Images

in ist übergeben wird Versuchen Sie etwas wie dieses:

string ftpfullpath = ConnectionDetails._ftpurl + "/" + filename; 
+0

Danke für die schnelle Antwort Daniel. Ich denke, Sie sind in der richtigen Gegend, aber ich bekomme jetzt "Der Remote-Server hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar (z. B. Datei nicht gefunden, kein Zugriff)." Es ist wie die Suche nach der lokalen Datei auf dem FTP-Server – Steve

+0

Haben Sie ein Verzeichnis Images auf Ihrem FTP-Server? –

+0

Ich vermute, dass entweder der Pfad falsch ist oder Sie keinen Zugriff auf das Verzeichnis haben. Können Sie mit einem FTP-Client manuell in das Images-Verzeichnis wechseln? –