【发布时间】:2014-01-02 21:00:38
【问题描述】:
在我的代码中,我想将特定的 JSON 文件上传和下载到 FTP 服务器。
序列化效果很好,上传效果也很好。当我通过 - 例如 - FileZilla 查找文件时,文件的内容是正确的。 (在服务器上)
但是当我使用我的应用程序(以及我的代码 - 不是使用 FileZilla)下载此文件时,我没有收到任何异常,但该文件几乎是空的。这是唯一的内容:
{}
这是我的下载代码:
string ResponseDescription = "";
FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create("ftp://" + "ftp.strato.com" + "/" + verzeichnis + "/" + file.Name);
req.Method = WebRequestMethods.Ftp.DownloadFile;
req.Credentials = new NetworkCredential(this.benutzer, this.passwort);
req.UseBinary = true;
req.UsePassive = false;
req.Proxy = null;
try
{
FtpWebResponse response = (FtpWebResponse)req.GetResponse();
Stream stream = response.GetResponseStream();
byte[] buffer = new byte[2048];
FileStream fs = new FileStream(destinationFolder + @"/" + destinationFile.Name, FileMode.Create);
int ReadCount = stream.Read(buffer, 0, buffer.Length);
while (ReadCount > 0)
{
fs.Write(buffer, 0, ReadCount);
ReadCount = stream.Read(buffer, 0, buffer.Length);
}
ResponseDescription = response.StatusDescription;
fs.Close();
stream.Close();
return true;
}
catch (Exception e)
{
MessageBox.Show(e.Message); // TODO - better Errorhandling
return false;
}
【问题讨论】:
-
您是否使用调试器单步执行它以查看发生了什么?另外,您将
req.UseBinary设置为true,但该文件是文本文件,我不知道这是否有问题。 -
嗨,是的,我逐步完成了代码。我看不出有问题。是的……这是一次尝试。当然这不是一个二进制文件,属性应该是“false”。它不适用于“真”和“假”。这只是一个“尝试”。 :)
-
@MaxLebold a) 您的代码似乎是正确的 b) 您获得的文件 (
{}) 看起来不像是部分下载的文件,而是一个有效的空 json。您的错误应该在其他地方。 -
但它是什么或在哪里?当上传到服务器很好时,服务器上的文件是正确的,只有在用我的代码下载文件后,文件是空的。
-
请将您的答案作为答案发布在下方,然后将其标记为已接受。您不应该在问题中编辑答案。