从升C客户端应用程序上传到PHP服务器(Upload to PHP server from c sh

2019-06-23 18:43发布

目前,我有交流锐利的应用程序(客户端应用程序)。 和Web应用程序编写PHP。 我想,只要在​​客户端执行特定操作来传输一些文件。 下面是客户端代码文件上传到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");
 }

我不是从上面的代码中得到任何错误。 但它似乎并不奏效。 为什么? 我这么想吗?

Answer 1:

您当前的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");
}
?>

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

我已经测试了上面的PHP代码与C#代码,它完美地工作。

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

  • 如果在上传用C#和PHP 多个文件的详细信息,下面是一些有用的链接:

    上传与HttpWebRequest的文件(的multipart / form-data的)

    使用数组中的HTML表单变量

    PHP:上传多个文件

    如果你想要的东西简单的上传多个文件,你才刚刚上传一个文件在一次upload.php在C#循环。



Answer 2:

你的PHP代码似乎是正确的,但您尝试访问使用的$ _FILES全球的“图片”文件。 这似乎并不在你的CSHARP代码中指定。 我不知道该怎么做想。 你可以试试,看看通过做的print_r或你vardump $ _FILE全球或使用array_keys功能它是如何在你的PHP命名

问候

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



文章来源: Upload to PHP server from c sharp client application