2012-09-01 72 views
1

我正尝试使用C#将文件上传到AS400。其结构是:使用FtpWebRequest将文件上传到AS400

ftp_server_ip_address/library/table 

例如为:

10.123.1.23/ABCD/XYZ 

文件名:sample.txt的

的AS400表具有相同的字段为我的文件布局。我可以使用PUT命令使用FTP命令成功上传文件,如下所示。

ftp> open 10.123.1.23 
ftp> username 
ftp> password 
ftp> cd ABCD 
ftp> put c:/sample.txt ABCD/XYZ 

我收到一条成功消息。

但是,当我尝试使用FtpWebRequest,我得到一个550 :” File unavailable or no access”错误消息。

我不知道如何构建URI。 目前,我的代码看起来像

FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(@"ftp://110.123.1.23/ABCD” + file.Name); 

而且,我无法浏览到使用Internet Explorer或Windows资源管理器中的FTP文件夹。我得到相同的550错误。任何帮助深表感谢。

+0

您正在使用哪个.NET版本? –

+0

它的目标.net 4.0客户端配置文件使用VS2010当然 –

回答

1

您构建的URL有点不对,您在文件名前缺少/,应该是这样的;

FtpWebRequest ftpRequest = 
    (FtpWebRequest)WebRequest.Create(@"ftp://110.123.1.23/ABCD/” + file.Name); 

您也没有存储在与您的交互式示例相同的目录中;

ftp> cd ABCD 
ftp> put c:/sample.txt ABCD/XYZ 

将文件XYZ存储在目录ABCD/ABCD中,而不仅仅是ABCD,就像你的URL例子中一样。

第三,如果您使用.NET 4.0或更高版本,则可能需要be bitten by this changed behavior in how directories are sent to the server

+0

我修改了URL为 FtpWebRequest ftpRequest =(FtpWebRequest)WebRequest.Create(@“ftp://110.123.1.23/ABCD/ABCD/”+ file.Name); 现在我得到501指定的对象名称太长,限制为10个字符:ABCD/Sampl。我无法进一步减少长度,因为这里我称为“ABCD”的库的长度为9个字符。完成? –

+0

@DeepthiRao检查[本页](http://support.microsoft.com/kb/2134299)的“解析”部分,因为它好像被新的.NET4.0 FTP行为咬住了。 –

+0

我试过了,它没有帮助,同样的501错误:(我错过了我之前评论中的斜线修改后的url看起来像FtpWebRequest ftpRequest =(FtpWebRequest)WebRequest.Create(@“110.123.1.23/ABCD/ABCD/” + fil e.Name); –

相关问题