125369
125369

Reputation: 3657

Issues with uploading PDF files using PHP

I am encountering a strange problem with my script which I am testing to upload PDF files. I can sucessfully upload some pdf files while not the other files, even though they are all pdfs and have .pdf as extension. Can anyone throw some light on this after going thtough my code

HTML PART:

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">                            
    <input type="file"  name="upload" /><br />        
    <input type="submit" name="submit">  

PHP PART:

  if(isset($_POST['submit'])){
                $output_form = 0;                

                if (($_FILES["upload"]["type"] == "application/pdf")
                    && ($_FILES["upload"]["size"] < 80000)){
                        if (file_exists("upload/" . $_FILES["upload"]["name"]))
                          {
                            echo $_FILES["upload"]["name"] . " already exists. ";
                          }
                          else
                          {
                            move_uploaded_file($_FILES["upload"]["tmp_name"],
                            "upload/" . $_FILES["upload"]["name"]);
                            echo "Stored in: " . "upload/" . $_FILES["upload"]["name"];
                          }                          
                    }else{
                        echo 'Invalid File';
                    }                      
            }

For some files I am getting the output, stored in output. For the others I am getting the message 'Invalid File'.

Thanks

Upvotes: 2

Views: 5775

Answers (2)

Paul
Paul

Reputation: 1

Had the same issues. Found that the file type could also be application/x-octet-stream So you need to check for that in the same statement that you are checking the file size. Something like this: if (($_FILES['pdfUpload']['type'] == "application/pdf") || ($_FILES['pdfUpload']['type'] == "application/x-octet-stream") && ($_FILES['pdfUpload']['size'] < 9000000)) //Much larger and we get a timeout during transfer

My 2 cents worth

Upvotes: 0

roryok
roryok

Reputation: 9645

your code above seems to have a condition that if the filesize is greater than 80000 then it should throw the 'Invalid file' error? What size are the ones that fail? I'd be willing to bet if you comment out that condition it'll work

Upvotes: 1

Related Questions