Solved

Uploading file: MAX_FILE_SIZE gives $_FILES["file"]["type"] != "application/pdf" error

Posted on 2012-04-12
5
376 Views
Last Modified: 2012-04-12
Hi,

My file upload script worked correctly until i added:
<input type='hidden' name='MAX_FILE_SIZE' value='10000'>

Now when uploading a pdf file, bigger or smaller than 10000 i get the error i set for a file not being: $_FILES["file"]["type"] != "application/pdf".

When i remove the MAX_FILE_SIZE the error does not appear, and uploading works well again.
What's going on here?

Thanks
0
Comment
Question by:peps03
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
5 Comments
 
LVL 22

Accepted Solution

by:
Kim Walker earned 500 total points
ID: 37836990
Depending on the browser, if your file is bigger than about 10K it will not send a file at all. So the file type would be null which is != "application/pdf".
0
 

Author Comment

by:peps03
ID: 37837020
Ah, i see. great!
Changing the order of the error messaging worked.
Now i first get the error the file is to big.

Thanks!
May i be so cheeky to ask you 1 more thing before accepting your answer?

Is there a way to check if a pdf is really a pdf? Changing a image's extension (.jpg) to pfd still uploads..
0
 
LVL 22

Expert Comment

by:Kim Walker
ID: 37837042
I'm afraid I don't the answer to that. You'd probably need to read the file header and check for a particular match. But I don't know what you'd need to look for.
0
 

Author Closing Comment

by:peps03
ID: 37837058
Ok, thanks again!
0
 
LVL 20

Expert Comment

by:Mark Brady
ID: 37837085
You can check the file type by using php's inbuilt "$_FILES['file']['type']" on your receiving form/script. Usually the users browser will send the file type information as well so insteadd of checking only for the file extension (which is not a guarantee of file type) you should run another check on the actual type. To get the type you would use:

$file_type = $_FILES['file']['type']; // Now the variable $file_type should contain the in formation you want. Echo the result to see the format it provides then write your checking code to suit.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Not sure what the best email signature size is? Are you worried about email signature image size? Follow this best practice guide.
This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
The viewer will learn how to count occurrences of each item in an array.
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question