Web客户端上传会发生在哪里?

时间:2011-08-09 05:49:43

标签: c# http

我写了一个简单的代码。我不明白,这里发生了什么。请向我解释,我在哪里可以找到给定的上传文件

WebClient client = new WebClient();
string uri = "http://localhost:8080/sample.txt";
client.Credentials = CredentialCache.DefaultCredentials;
string Filename = "F:\sample_test.txt/docx;
byte[] arrReturn = client.UploadFile(uri, "POST", Filename);

2 个答案:

答案 0 :(得分:1)

嗯,从这开始就明确不是你的真正的代码,因为这行不会编译:

string Filename = "F:\sample_test.txt/docx/"; 

\s不是有效的转义序列但是,假设您有工作代码,那么您的应用程序将使用该文件的内容向给定的URI发出HTTP POST请求 - 在此情况1}}。它完全完全直到服务器它对请求的作用。

  • 它可以将文件保存在某处的磁盘上
  • 可以将其保存到数据库
  • 可以将其发布到其他网络服务
  • 它可以完全忽略内容,而不是将其保存在任何地方

上传文件的行为无法保证 - 您只是使用某些数据发出请求。

现在,如果您的URI 确实涉及http://localhost:8080/sample.txt,那么它会将文件上传到您所在的计算机上 - 因此您应该控制在端口8080上侦听的Web服务器将与上传请求有关。同样,我们不能告诉你将做什么 - 这取决于服务器。

答案 1 :(得分:0)

可能是您的文件名:

string Filename = "F:\sample_test.txt/docx/";

将正斜杠更改为黑色斜杠,并提供实际文件名,而不仅仅是路径:

string Filename = @"F:\sample_test.txt\docx\";

或者

string Filename = "F:\\sample_test.txt\\docx\\"; 

实际上,文件名不是很有意义 - 我不确定UploadFile如何处理它,即使斜杠以正确的方式处理,因为你似乎有一个文件名后跟一个目录...?实际上不应该是:

string Filename = @"F:\docx\sample_test.txt"?

它可以是URI - 您指定文件名和URI。

您是否查看了URI中指定的位置? http://localhost:8080/

如果它不存在,那么尝试将代码包装在try-catch块中以查看是否抛出任何异常:

try
{
     byte[] arrReturn = client.UploadFile(uri, "POST", Filename);
}
catch (Exception ex)
{
     // do something here - in the debugger, you can inspect ex.Message to see the exception
}