0

I want to upload to my website via PowerShell.

When I use a simple HTML file the uploaded file appears in the folder, but when I use PowerShell I get the error code 200 and the file is not uploaded.

I am using this code (source: PHP File Upload):

PHP:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

HTML:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

and PowerShell:

Invoke-Webrequest -URI "https://example.com/upload.php" -Method POST -InFile "C:\Users\markus\Desktop\abc.png" -Debug

This is the error/debug message that I get:

DEBUG: POST with -1-byte payload
DEBUG: received 114-byte response of content type text/html; charset=UTF-8


StatusCode        : 200
StatusDescription : OK
Content           : 
                    Sorry, file already exists.Sorry, only JPG, JPEG, PNG & GIF files are allowed.Sorry, your file was not uploaded.
RawContent        : HTTP/1.1 200 OK
                    Vary: User-Agent
                    Content-Length: 114
                    Content-Type: text/html; charset=UTF-8
                    Date: Sun, 03 Apr 2022 17:29:37 GMT
                    Server: Apache/2.4.53 (Unix)
                    X-Powered-By: PHP/8.0.17

So, what I am doing false and how should I use the Invoke-WebRequest command correct to upload an image?

1 Answer 1

1

There's nothing wrong with your PS-Script

200 is actually not an error but an success http status-code. Would the PS script upload the file if no file is available? If yes, I would simple delete the existing file:

Replace the block Check if file already exists with Delete file if existing

//  Delete file if existing
if (file_exists($target_file)) {
    $uploadOk = unlink($target_file) ? 0 : 1;
}
Sign up to request clarification or add additional context in comments.

7 Comments

I am sorry. The PHP-script does not work with your change too. I get this: Sorry, only JPG, JPEG, PNG & GIF files are allowed.Sorry, your file was not uploaded.
just for testing purposes please comment out wit // the five lines below // Allow certain file formats
It doesn't work either. Now I get this: Sorry, file already exists.Sorry, your file was not uploaded.
you may misunderstood. I've created a gist with the changes. Please try and let me know.
After I have copied and tested your code, I get this information: Sorry, your file was not uploaded.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.