【问题标题】:upload with c# to ftp errors用 c# 上传到 ftp 错误
【发布时间】:2022-01-22 09:00:42
【问题描述】:

我知道有很多关于这些问题的问题,但我不知道我做错了什么。

有问题的网站允许我使用浏览器上传文件,但我正在尝试实施自动化系统。我测试过了,我可以手动上传。

我正在使用 webclient UploadFile,我要么只是得到错误,要么它似乎可以工作,但目标站点上没有显示任何内容。

这是我正在使用的: 这个给我一个实现错误(501)(未实现)

'''

    using (var client = new WebClient())
    {
        client.Credentials = new NetworkCredential(username, password);
        client.UploadFile("https://ftp.serverurl.com/Upload/TestFile.txt", WebRequestMethods.Ftp.UploadFile, @"C:\temp\testftp.txt");
    }

'''

如果我在没有路径和文件名的情况下使用 https://ftp.serverurl.com/,我会得到同样的错误。

如果我将站点更改为 ftp://ftp.serverurl.com/Upload/TestFile.txt,我会超时。 (无法连接)

如果我尝试使用下面的代码,我会收到未经授权的 401。我确实验证了用户名和密码是否正确。

'''

    string file = @"C:\temp\testftp.txt";
    FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
    BinaryReader r = new BinaryReader(fs);
    byte[] postArray = r.ReadBytes((int)fs.Length);
    using (var client = new WebClient())
    {
        client.Credentials = new NetworkCredential(username, password);
        using (var postStream = client.OpenWrite(webServiceUrl, "POST"))
        {
            postStream.Write(postArray, 0, postArray.Length);
        }
    }

'''

该网站据称使用 pgp ftp。网站上的组件使用“Serv-U WebClient”,但我找不到任何有用的文档。我无法使用 filezilla 连接到它。不确定它应该使用哪个端口,但 21 不起作用。

【问题讨论】:

  • 仅供参考,我整个上午都在寻找答案,但我没有弄清楚。
  • HTTP 和 FTP 是非常不同的协议。您需要从使用 FTP 客户端开始,而不是像现在那样使用 HTTP 客户端。 NuGet 上会有几个可供选择。 (从技术上讲,您可以将WebClient 用于一些有限的 FTP,但它已经过时了,对于 HTTP,您现在应该更喜欢 HttpClient,而对于 FTP,请使用专用的客户端)。
  • 我终于能够使用 sftp 使用 filezilla 进行连接。仍在尝试弄清楚如何使用 c# 进行连接。 @sellotape 谢谢。我没有意识到 webclient 不起作用。我会试试你的建议。
  • @sellotape 谢谢。那是我需要的信息。我现在可以上传到网站了。
  • SFTP 和 FTP 也是完全不同的协议。

标签: c# ftp


【解决方案1】:

正如 Sellotape 指出的那样,问题在于我需要使用 SFTP nuget 包而不是 webclient 或 httpclient。一旦我发现该站点使用的是 sftp 而不是常规的 ftp,这才有意义。

【讨论】:

    猜你喜欢
    • 2012-05-13
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多