Upload to my website from my VB.net application

2019-08-24 05:11发布

问题:

I'm designing a site that I'll be uploading content to from my VB.net program. I've also set up the stuff so you can upload content from one of the pages:

    <form enctype="multipart/form-data" action="upload.php" method="post">
        <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
        Choose a file to upload: <input name="uploaded_file" type="file" />
        <input type="submit" value="Upload" />
    </form> 

Is there any way to upload using this same method, but with my VB.net program? I'm using VB.net so all .net examples and solutions are acceptable :)

EDIT:

Here is a copy of what upload.php is:

<?php

        //Check that we have a file
        if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) {
          //Check if the file is JPEG image and it's size is less than 350Kb
          $filename = basename($_FILES['uploaded_file']['name']);
          $ext = substr($filename, strrpos($filename, '.') + 1);
          if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") && 
            ($_FILES["uploaded_file"]["size"] < 350000)) {
            //Determine the path to which we want to save this file
              $newname = dirname(__FILE__).'/uploads/'.$filename;
              //Check if the file with the same name is already exists on the server
              if (!file_exists($newname)) {
                //Attempt to move the uploaded file to it's new place
                if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'],$newname))) {
                   echo "It's done! The file has been saved as: ".$newname;
                } else {
                   echo "Error: A problem occurred during file upload!<br /><br /><a href='index.php'>Try Uploading Again</a>";
                }
              } else {
                 echo "Error: File ".$_FILES["uploaded_file"]["name"]." already exists!  That's our fault.  Please be patient while we fix it :)<br /><br /><a href='index.php'>Try Uploading Again</a>";
              }
          } else {
             echo "Error: Only .jpg images under 350Kb are accepted for upload<br /><br /><a href='index.php'>Try Uploading Something Smaller</a>";
          }
        } else {
         echo "Error: No file uploaded";
        }
        ?>

回答1:

As was said in comments you need System.Net.WebClient. Your problems can be caused by not having proper headers

.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
.Headers.Add(System.Net.HttpRequestHeader.ContentType, "application/x-www-form-urlencoded")
.Headers.Add(System.Net.HttpRequestHeader.ContentLanguage, "en-gb")

Or by not handling cookies properly: It Could Be Done!: WebClient: Handling Cookies