通过邮件将文件上传到Web服务

时间:2014-04-20 16:00:01

标签: c#

我是c#的新手,我遇到将文件上传到网络服务器的问题。

我在生成代码时使用this作为模板。

try
{
    using (WebClient client = new WebClient()) {
        client.Headers.Add("Content-Type", "binary/octet-stream");
        ans = client.UploadFile(remoteSiteFileURL, "POST", @"D:\test.txt");
    }

    string responseAsString = Encoding.Default.GetString(ans);
    MessageBox.Show("Done" + responseAsString);
}

当我调用此代码时,我什么也得不到,只有在某个时间(可能是一分钟)'The operation has time out'之后才会出现异常。

文件test.txt小于1kb(实际上是几个字节)。 Web服务(站点)工作,我轻松上传了500kb的数据。

我在测试上传时使用了下一个html表单:

<h1>Upload file form</h1>
    <form enctype="multipart/form-data" action="upload.php" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="2097152" />
        Send file<input name="userfile" type="file" />
    <input type="submit" value="Send File" />
    </form>

没有身份验证,在upload.php中设置了会话控制。

UPDATE1: 1)当我运行此代码时,我无法关闭我的应用程序。它挂起来了。 2)我关闭了防火墙,这没有帮助。

UPDATE2: 我把记录器放在了'upload.php&#39;在调用时写入文件。所以,我的日志中没有任何内容,即它没有被调用(我不确定它。可能是在传输完整文件时调用它(脚本))。

问题可能是什么?我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

解决方法是增加此timout值。但是WebClient类没有这样的属性或方法。因此,您需要在自己的类中包装WebClient,以便在上载数据之前设置基类的超时。 而且你可以尝试WebClient的异步方法。 WebClient.UploadFileAsync

答案 1 :(得分:0)

This sample不首先设置标头。还有运气吗?