首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebClient.UploadData为FTP返回byte[0]

WebClient.UploadData为FTP返回byte[0]
EN

Stack Overflow用户
提问于 2015-07-21 09:31:27
回答 2查看 962关注 0票数 0

我使用下面的代码示例将数据上载到FTP服务器。

代码语言:javascript
复制
var streamXml = new MemoryStream();
var writer = new StreamWriter(streamXml);
writer.Write(stringaXml);
writer.Flush();
streamXml.Position = 0;

var response = client.UploadData(remoteFilePath, ReadFully(streamXml));       
Logger.Info(client.Encoding.GetString(response));

public static byte[] ReadFully(Stream input)
{
    var buffer = new byte[16 * 1024];
    using (var ms = new MemoryStream())
    {
         int read;
         while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
         {
             ms.Write(buffer, 0, read);
         }
         return ms.ToArray();
     }
}

文件已成功传输,但response始终是byte[0]

我是不是漏掉了什么?

更新

我以这样的方式修改了ReadFully方法:

代码语言:javascript
复制
public static byte[] ReadFully(Stream input)
{
    using (MemoryStream ms = new MemoryStream())
    {
        input.CopyTo(ms);
        return ms.ToArray();
    }
}

我的小XML文件已成功保存到FTP服务器,但response仍然是byte[0]

EN

回答 2

Stack Overflow用户

发布于 2015-07-21 13:42:21

我检查了RFC的FTP (https://www.rfc-editor.org/rfc/rfc959),上面写着

代码语言:javascript
复制
The data, when transferred in response to FTP service commands, shall always be sent over the data connection, except for certain informative replies.

看起来,它正在使用另一个端口(默认为20)发送响应,这就是为什么您无法接收它。

您没有提到client对象是什么类型,但我建议使用内置的FTPWebRequest类来执行FTP操作。下面是一个如何使用它上传文件的示例:MSDN如何:使用FTP上载文件

更新:

我在上面的文章中测试了示例代码,并且我能够通过FtpWebResponse.StatusDescription获得服务器的响应消息,如

"226成功转移"/newFile.txt"\r\n“

这正是OP想要的

票数 -1
EN

Stack Overflow用户

发布于 2015-07-21 15:03:01

FTP上载(与HTTP上载相反)不能有任何响应体。因此,WebClient.UploadData从不为FTP返回任何内容。

你希望得到什么样的回应?FTP服务器返回的所有内容都是状态消息。如果返回成功,WebClient.UploadData将默默地返回。如果返回为error,则WebClient.UploadData将抛出带有状态消息的异常。

例如:

System.Net.WebException类型的未处理异常发生在System.dll中 附加信息:远程服务器返回一个错误:(550)文件不可用(例如,文件未找到,无法访问)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31535307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档