2013-04-24 115 views
2

我有问题时,发送的FTP CSV文件,我用AxaptaPedia发现下面的代码:Dynamics AX的FTP

object ftpo; 
object ftpResponse; 
System.Net.FtpWebRequest request; 
System.IO.StreamReader reader; 
System.IO.Stream requestStream; 
System.Byte[] bytes; 
System.Net.NetworkCredential credential; 
System.String xmlContent; 
System.Text.Encoding utf8; 

System.Net.FtpWebResponse response; 
; 
reader = new System.IO.StreamReader(strfmt("%1%2","\\\\Server\\directory\\","Export.csv")); 
utf8 = System.Text.Encoding::get_UTF8(); 
bytes = utf8.GetBytes(reader.ReadToEnd()); 
reader.Close(); 

ftpo = System.Net.WebRequest::Create(strfmt("%1%2","ftp://IP_Address/directory/","Export.csv")); 
request = ftpo; 

credential = new System.Net.NetworkCredential("user","password"); 
request.set_Credentials(credential); 
request.set_ContentLength(bytes.get_Length()); 
request.set_Method("STOR"); 

requestStream = request.GetRequestStream(); 
requestStream.Write(bytes,0,bytes.get_Length()); 
requestStream.Close(); 

ftpResponse = request.GetResponse(); 
response = ftpResponse; 
info(response.get_StatusDescription()); 

没有编译错误,不执行错误,但文件不会被上传到我的FTP,我想问题在于路径文件编码,我尝试了其他解决方案而没有结果。我想批量处理FTP上的发送文件,它使用wininet类,但wininet类不​​能在服务器端运行,所以我必须使用.net框架。 任何意见或解决方案是值得欢迎的

感谢您的帮助

+0

我假设你已将'IP_Address'更改为正确的服务器或IP地址? – 2013-04-24 21:54:17

+0

是的,当然,这是一个例子 – 2013-04-25 07:42:32

+0

这是我用wininet类的工作正常的语法,我需要找到一个工作语法,它在System.IO.StreamReader(..)和System.Net.WebRequest ::创建(..) – 2013-04-25 07:46:26

回答

1

我曾就此问题与文件保存到任何网络目录中,而不仅仅是FTP。对我而言,工作原理是为服务器和文件名创建单独的变量,并使用连接而不是字符串格式(StrFmt)。由于某种原因,该字符串只是默默的格式化失败的工作,而串联不工作:

str server = "\\\\Server\\directory\\"; 
str fileName = "Export.csv"; 
Net.WebRequest::Create(server + fileName); 

而且最好的做法不是硬编码这些值之一。您应该创建一个参数表来存储这些值,并调用该表来查找值并将它们分配给您的变量,或者使用对话框在运行时从用户获取输入。这避免了将来的任何人在FTP服务器发生变化时不得不更改代码,并且还避免了文件名更改的问题。