【问题标题】:Appending text to FTP instead of overwriting将文本附加到 FTP 而不是覆盖
【发布时间】:2015-05-25 06:21:57
【问题描述】:

我正在尝试将一行文本追加在线txt文件,但我尝试的代码是替换文件中的所有txt而不是添加新行,即使添加了Enviorment.Newline。

这是我尝试过的:

  private void submithsbtn_Click(object sender, EventArgs e)
    {
        WebClient client = new WebClient();
        client.Credentials = new NetworkCredential("username", "password");

        string peak = peakvaluelbl.Text;
        string dir = @"ftp://example.com/file.txt";
        string name = nametbox.Text;

       client.UploadString(dir, name + " recived a peak score of: " + peak + Environment.NewLine);        
    }

有谁知道我怎样才能达到这个结果?

【问题讨论】:

    标签: c# text ftp append


    【解决方案1】:

    有一个重载方法 WebClient UploadString,它接受三个参数,第二个参数用于指定方法。

    client.UploadString(url,"APPE",data);
    

    从 FTP 命令列表中检查on Wikipedia。

    【讨论】:

    • 我正在使用这个,但 IIRC 这是用新字符串替换内容而不是附加。
    【解决方案2】:

    使用高级 webClient 类对于您想要做的事情来说太抽象了。

    这个ftpWebRequest example 实现你想做的事情。

    private static void AppendString(Uri target,byte[] data) {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target);
        request.Method = WebRequestMethods.Ftp.AppendFile;
        request.ContentLength = data.length;
        request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");
        Stream requestStream = request.GetRequestStream();
        requestStream.Write(data, 0, data.Length);
        requestStream.Close();
        FtpWebResponse response = (FtpWebResponse) request.GetResponse();
        response.Close();
    }
    

    【讨论】:

    • 哇,我花了一些时间摆弄,但这实际上最终奏效了。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多