从c sharp客户端应用程序上传到PHP服务器

目前我有一个尖锐的应用程序(客户端应用程序) 和一个写PHP的Web应用程序。 我想在客户端执行特定操作时传输一些文件。 这是将文件上传到php服务器的客户端代码..

private void button1_Click(object sender, EventArgs e) { System.Net.WebClient Client = new System.Net.WebClient(); Client.Headers.Add("Content-Type", "binary/octet-stream"); byte[] result = Client.UploadFile("http://localhost/project1/upload.php", "POST", @"C:\test\a.jpg"); string s = System.Text.Encoding.UTF8.GetString(result, 0, result.Length); } 

这是用于移动文件的upload.php文件..

 $uploads_dir = './files/'; //Directory to save the file that comes from client application. foreach ($_FILES["pictures"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; $name = $_FILES["pictures"]["name"][$key]; move_uploaded_file($tmp_name, "$uploads_dir/$name"); } 

我没有从上面的代码中得到任何错误。 但它似乎没有起作用。 为什么? 我错过了什么吗?

您当前的PHP代码用于处理多个文件上载,但您的C#代码仅上载一个文件。

您需要稍微修改PHP代码,删除foreach循环:

  

您还需要确保./files目录存在。

我用你的C#代码测试了上面的PHP代码,它运行得很好。

  • 有关处理文件上载的更多信息, 请参阅PHP文档 。

  • 有关使用C#和PHP上载多个文件的更多信息,以下是一些有用的链接:

    使用HTTPWebrequest上传文件(multipart / form-data)

    在HTML表单变量中使用数组

    PHP:上传多个文件

    如果你想要一些简单的上传多个文件的东西,你只需要一次上传一个文件到C#循环中的upload.php

您的PHP代码似乎是正确的,但是您尝试使用$ _FILES全局的“picture”键访问该文件。 它似乎没有在您的csharp代码中指定。 我不知道怎么想。 您可以尝试通过执行$ _FILE全局的print_r或vardump或使用array_keys函数来查看它是如何在您的php中命名的

问候

编辑:我发现此链接可以帮助您在上传的文件中添加“名称”: http : //www.bratched.com/en/home/dotnet/69-uploading-multiple-files-with-c.html