我在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框架。欢迎任何想法或解决方案
感谢你的帮助
发布于 2013-05-17 22:18:55
我在将文件保存到任何网络目录时都遇到过这个问题,而不仅仅是FTP。对我来说起作用的是为服务器和文件名创建单独的变量,并使用连接而不是字符串格式(StrFmt)。由于某些原因,字符串格式化只是静默地不起作用,而连接却起作用:
str server = "\\\\Server\\directory\\";
str fileName = "Export.csv";
Net.WebRequest::Create(server + fileName);同样,最佳实践不是硬编码这两个值中的任何一个。您应该创建一个参数表来存储这些值,并调用该表来查找这些值并将它们分配给您的变量,或者使用一个对话框在运行时从用户那里获取输入。这避免了将来任何人在FTP服务器更改时必须更改代码,也避免了文件名更改的问题。
https://stackoverflow.com/questions/16196195
复制相似问题