【问题标题】:C# Text file upload to a php webseverC# 文本文件上传到 php web 服务器
【发布时间】:2011-07-02 05:28:05
【问题描述】:

好的,这里有一些例子,但它们真的很啰嗦和令人困惑

基本上我想上传一个文件,比如说 test.txt 从我的应用程序到我的网络服务器,我已经有了 PHP 来处理帖子,

有没有快速简便的方法来做到这一点?

我试过使用:

WebClient client = new WebClient();

string myFile = @"C:\Draft_3.txt";

client.Credentials = CredentialCache.DefaultCredentials;

client.UploadFile(@"http://myweb.com/projects/idl/Draft Results/RK/myFile", "PUT", myFile);

client.Dispose();

但是当运行该代码时,它给了我一个“'System.Net.WebException' 类型的第一次机会异常发生在 System.dll”运行时错误,我缺少什么吗?

【问题讨论】:

  • 检查 webexception 状态属性的返回码(“如果方法参数指定了服务器或地址资源不理解的动词,则底层协议类确定发生的情况。通常,WebException 是抛出设置了 Status 属性以指示错误。")

标签: c# php file upload webserver


【解决方案1】:

您的意思是使用"POST" 方法而不是"PUT"? POST 是常用的 PHP 上传机制。 PUT 真正用于内容管理/虚拟磁盘。我什至从未听说过 PHP 支持 PUT,因为它通常在 PHP 参与之前就已处理;由 Apache/httpd 提供。

【讨论】:

    【解决方案2】:

    根据MSDN,该异常通常是由以下原因之一引起的:

    BaseAddress和address组合形成的URI无效。

    -或-

    fileName 为空,为空,包含 无效字符,或不存在。

    -或-

    上传文件时出错 文件。

    -或-

    服务器没有响应 托管资源。

    -或-

    Content-type 标头以 多部分。

    我会检查您发布到的服务器并验证它是否收到了请求,如果收到了,它会发送什么响应。

    【讨论】:

    • 我认为可能是“内容类型标头以多部分开头”。我将如何改变这个?我没有得到服务器的响应
    • 如果你在本地调试,你可以使用fiddler2.com/fiddler2观察你的应用程序和服务器之间的通信。我不确定是否要更改标头,您可以尝试使用 client.Headers 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2017-06-02
    • 1970-01-01
    • 2015-01-21
    • 2010-12-03
    • 2016-06-15
    • 1970-01-01
    相关资源
    最近更新 更多