2

我在 ftp 上发送 csv 文件时遇到问题,我使用在 AxaptaPedia 上找到的以下代码:

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 框架。欢迎任何想法或解决方案

感谢帮助

4

1 回答 1

1

我在将文件保存到任何网络目录而不仅仅是 FTP 时遇到了这个问题。对我有用的是为服务器和文件名创建单独的变量,并使用连接而不是字符串格式(StrFmt)。由于某种原因,字符串格式只是默默地无法工作,而连接确实有效:

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

最佳实践也不是对这些值中的任何一个进行硬编码。您应该创建一个参数表来存储这些值并调用该表以查找这些值并将它们分配给您的变量,或者使用对话框在运行时从用户那里获取输入。这避免了将来任何人在 FTP 服务器发生更改时都必须更改代码,也避免了文件名更改的问题。

于 2013-05-17T14:18:54.817 回答