如何使用WebClient将文本文件从Windows表单上载到特定的Url

本文关键字:上载 Url 表单 Windows WebClient 何使用 文本 文件 | 更新日期: 2023-09-27 17:57:27

我想通过WebClient将一个普通文本文件从我的VisualStudio C#Windows窗体应用程序通过"Post"发送到Url。我的代码:

using(WebClient w = new WebClient())
{
   w.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
   string HtmlResult = w.UploadString(@"http://xxx/api/test", "Post", @"C:'Temp'T.txt");
}

这就是我迄今为止的发现。当我运行此代码时,我的web项目中的post方法会被击中,但参数是null(这是可以理解的,因为它的数据类型是字符串,但当我将文件地址更改为类似"test"的简单字符串时,它也是null)。

所以我真正的问题是我无法将文本数据发送到我的URL。

如何使用WebClient将文本文件从Windows表单上载到特定的Url

首先,您的ContentType应该是"application/text",而不是"application/x-www-form-urlencoded"。

其次,此方法默认为HTTP/HTTPS的POST,因此使用重载,该重载接受两个字符串参数UploadString("destination Url","data")。如果您只需要使用三参数重载,那么方法应该是"POST"而不是"POST"。

此方法不会为您读取文件,您需要添加代码将文件的内容读取到字符串中,然后将该字符串传递给UploadString方法的数据参数。

我可能应该补充一点,在接收api中,您将从Request.InputStream对象读取数据。与任何流一样,您将把它读取到字节数组中,并需要将其编码回字符串。您必须使用与将文件读取为字符串时相同的编码。

流InputStream是一个单向只读流,因此在编码回字符串之前,您需要将其全部读取到字节数组中。