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

Faw*_*Izy 15 php c# file-upload file-transfer

目前我有一个尖锐的应用程序(客户端应用程序)和一个写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); 
}
Run Code Online (Sandbox Code Playgroud)

这是用于移动文件的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");
 }
Run Code Online (Sandbox Code Playgroud)

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

Xen*_*non 13

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

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

<?php
$uploads_dir = './files'; //Directory to save the file that comes from client application.
if ($_FILES["file"]["error"] == UPLOAD_ERR_OK) {
    $tmp_name = $_FILES["file"]["tmp_name"];
    $name = $_FILES["file"]["name"];
    move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
?>
Run Code Online (Sandbox Code Playgroud)

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

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

  • 它完美地工作:)非常感谢您的时间和贡献.希望它可以帮助别人. (5认同)