2012-04-01 4 views
1

Я пытаюсь загрузить файлы через FTP, используя следующий скрипт. Файл загружается на FTP-сервер, однако имя файла всегда называется «Изображения» и не имеет никакого exstenion.Проблема с загрузкой FTP-файла - Отсутствует имя файла

Его, вероятно, что-то простое, что я пропустил, но если кто-нибудь знает, где это происходит, это поможет.

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

Я не вижу, что вы используете переменную имя файла в любом месте? –

ответ

0

Нашел вопрос - была простая ошибка школьного мальчика.

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

Должно быть:

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

+0

Я, хотя, что вы сказали, что можете FTP вручную в каталог «Изображения»? Это звучит для меня так, как будто вы могли бы сэкономить потраченное впустую усилие, будучи немного менее неряшливым. Рад, что вы нашли ошибку в конце. –

0

Проблема, казалось бы, эти 3 линии:

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

Вы не используете переменную имя файла, поэтому путь, который получает Передаваемый

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

Попробуйте примерно следующее:

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

Спасибо за быстрый ответ. Я думаю, что вы находитесь в правильной области, но теперь я получаю «Удаленный сервер возвратил ошибку: (550) Файл недоступен (например, файл не найден, нет доступа)». Это похоже на поиск локального файла на FTP-сервере. – Steve

+0

У вас есть каталог «Изображения» на вашем ftp-сервере? –

+0

Я предполагаю, что либо путь неправильный, либо у вас нет доступа к каталогу. Вы можете вручную загружать ftp в каталог «Изображения» с помощью ftp-клиента? –

Смежные вопросы