Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Upload to PHP server from c sharp client application

Currently i have a c sharp application (Client app). and a web application written php. I want to transfer some files whenever a particular action is performed at client side. Here is the client code to upload the file to php server..

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); 
}

Here is the upload.php file to move the file..

$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");
 }

I'm not getting any errors from above code. but it does not seem to be working. Why is it? Am i missing something?

like image 296
Fawzan Izy Avatar asked Apr 19 '12 22:04

Fawzan Izy


1 Answers

Your current PHP code is for handling multiple file uploads, but your C# code is only uploading one file.

You need to modify your PHP code somewhat, removing the foreach loop:

<?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");
}
?>

You also need to ensure that the ./files directory exists.

I have tested the above PHP code with your C# code and it worked perfectly.

  • For more information on handling file uploads, refer to the PHP documentation.

  • For more information on uploading multiple files with C# and PHP, here are some helpful links:

    Upload files with HTTPWebrequest (multipart/form-data)

    Use Arrays in HTML Form Variables

    PHP: Uploading multiple files

    If you want something simple for uploading multiple files, you just just upload one file at a time to upload.php in a C# loop.

like image 135
Xenon Avatar answered Oct 13 '22 18:10

Xenon