使用C#将文件上传到Web服务器

File upload to web server using C#

我正在尝试使用 C# 在网络服务器中上传文件,如下所示

try
{
    // create WebClient object
    WebClient client = new WebClient();

    string myFile = @"D:\test_file.txt";
    client.Credentials = CredentialCache.DefaultCredentials;

    // client.UploadFile(@"http://mywebserver/myFile", "PUT", myFile);
    client.UploadFile(@"http://localhost/uploads", "PUT", myFile);
    client.Dispose();
}
catch (Exception err)
{
    MessageBox.Show(err.Message);
}

但每次我收到这个错误:

The remote server returned an error: (405) Method Not Allowed.

该错误表示服务器不允许您使用的"PUT"方法。检查响应 headers 以获取允许的方法。更多信息 here.

或者查看您尝试将文件上传到的应用程序的文档。

错误表明您需要注册您正在使用的服务

如果是wcf,你可以这样注册

"%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r

HTTP Error 405 Method not allowed

我已经使用 POST 方法和服务器端代码解决了这个问题:

C#代码

try
{
    WebClient client = new WebClient();
    string myFile = @"D:\test_file.txt";
    client.Credentials = CredentialCache.DefaultCredentials;
    client.UploadFile(@"http://localhost/uploads/upload.php", "POST", myFile);
    client.Dispose();
}
catch (Exception err)
{
    MessageBox.Show(err.Message);
}

服务器端PHP代码upload.php

<?php
    $filepath = $_FILES["file"]["tmp_name"];
    move_uploaded_file($filepath,"test_file.txt");
?>