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

标签 c# php file-upload file-transfer

目前我有一个 c sharp 应用程序(客户端应用程序)。和一个 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");
 }

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

最佳答案

您当前的 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 目录存在。

我已经用你的 C# 代码测试了上面的 PHP 代码,它工作得很好。

关于c# - 从 c sharp 客户端应用程序上传到 PHP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10237983/

相关文章:

c# - 如何在 WPF 中设置 DataGrid header 的样式

php - 跨多个数据库删除行

php - PHP : What's the best practice for catching PHP errors? [closed]

php - 如何读取用PHP上传的文件的标题?

javascript - 如何仅使 Dropzone.js Previews Div 可点击而不是整个表单

c# - 根据 asp.net 中的哪个用户显示内容

c# - 使用并发堆栈

c# - 如何将 UserControl 附加到 MVP 模式中的窗体?

php - Laravel 5.4重定向不起作用

django - 如何在 Django 中上传电影文件?