【问题标题】:Extra data when uploading txt file to FTP server using C#使用 C# 将 txt 文件上传到 FTP 服务器时的额外数据
【发布时间】:2015-12-27 08:00:32
【问题描述】:

好的,所以我正在通过尝试上传包含“HELLO WORLD”内容的文本文件来测试将文件上传到 FTP 服务器。 我得到了“回报” “上传文件完成 System.Net.WebClient 错误 -> 取消 ->False”。 该文件似乎出现在服务器上,但是当我打开它时,内容如下:

--------------8d30e4d69803578
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: application/octet-stream

HELLO WORLD
--------------8d30e4d69803578

我使用的代码是:

string ftpUserName = "ftpUserName";
string ftpPassword = "ftpPassword";
string ftpURL = "ftp://ftpServer.com/text.txt";
string path = "pathToFile/test.txt"
public static void Test()
{
    System.Uri uri = new System.Uri(ftpURL);
    FileInfo file = new FileInfo(path);
    if (!file.Exists) 
    {
        return;
    }
    using(WebClient wc = new WebClient())
    {
        wc.Credentials = new NetworkCredential(ftpUserName,ftpPassword);
        wc.UploadFileCompleted +=  UploadFileCompleted;
        wc.UploadFileAsync(uri,"STOR",path);
    }
}

任何帮助将不胜感激

编辑

我也刚刚尝试了一个 zip 文件,但它已损坏。 .txt 和 .zip 到达服务器后也会小得多,所以我假设上传失败是因为该错误

编辑 2

使用 .net2.0 的 FtpWebRequest 版本解决了这个问题

【问题讨论】:

  • 所以该文件存在于服务器上,但你有它的内容错误,你得到一个错误?文件格式还是.txt吗?
  • 是的,文件最终在服务器上,仍然是 .txt,但内容似乎被破坏了
  • 可能不相关,但由于您调用 UploadFileAsync 版本,您应该 await 该行,因为您可能会丢弃您的上传文件之前的网络客户端。
  • 您是否尝试阅读电子邮件内容(获取 HELLO WORLD)?

标签: c# ftp


【解决方案1】:

我刚刚验证过 - 除了我提到的异步问题之外,您的代码没有任何问题。

【讨论】:

  • 对不起,我的错,没有意识到WebClient 有两个版本的异步方法。要使用我所说的版本,您可以致电 UploadFileTaskAsync。但这是一个巨大的主题,在进入它之前你应该真正阅读它。
  • 所以你的代码看起来还不错。您确定粘贴的代码与产生此行为的代码相同吗?
  • 这是我调用上传的函数,但我想我发现了我的问题,我没有两个版本的异步方法。我正在用 unity3D 写这篇文章,它迫使你使用 .net 2,这让我想知道我是否遗漏了一些关键的东西,并且正在阅读一种更新的方法
  • 您的代码应该没问题。您也可以尝试直接使用FtpWebRequest。它会让你更好地控制请求。
  • 啊哈!使用 2.0 版本的 FptWebRequest 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多