开发者

html page hanging when posting file upload

I'm trying to add a file upload script in php to a website I'm designing. I've used an online example (I know it's not secure and I plan on making it secure, I just want the basic functionality working first).

Basically what's happening is that when I click the "submit" button, the page stalls and says "loading xyz server.." forever and doesn't ever go to the post action php page! This is very f开发者_运维技巧rustrating and I can't see why it won't work!

The code is below and I've tried this on 2 different servers with same results. I'd be very grateful if someone could let me know what I'm possibly doing wrong?

<html> 
<body>
  <form enctype="multipart/form-data" action="do.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> 
</body> 
</html>


<?php
//Сheck 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__).'/upload/'.$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!";
        }
      } else {
         echo "Error: File ".$_FILES["uploaded_file"]["name"]." already exists";
      }
  } else {
     echo "Error: Only .jpg images under 350Kb are accepted for upload";
  }
} else {
 echo "Error: No file uploaded";
}
?>

Thanks very much for your time, I have searched for hours to fix this with no luck!


If you post to an Iframe it won't lock your page. Then watch the Iframe contents to see what the server response is, or better: use Firebug on Firefox and inspect he NET tab to see what's going on with your post request.


How big of a file are you uploading? Most browsers do not display any kind of upload progress bar, and only recently has PHP supported even bare bones progress reports. For a large file, all you'd see is the "... loading ..." status bar text with no indication that data's actually being uploaded.

As for the rest of the code, here's a few things you need to clean up before putting this into production:

$_FILES['uploaded_file']['error'] == 0

This will evaluate to true if the ['error'] element isn't set. Use === instead, which does forces value and type to be equal, not merely value.

if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") && 

The filename and filetype values in the $_FILES array are what's supplied by the remote user, and can be easily mainipulated. Best to use a server-side mime-type identifer (getimagesize() for pictures works well) to see what the file really is.


Nevermind! It turns out it was something to do with the wireless network at my University. I got home, refreshed the page and it worked fine. I will have to have words with the system administrator about the time I wasted trying to solve a problem made by them.

Thanks for the help anyway guys,

Scott

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜