Jump to content

File upload problem


pcw

Recommended Posts

Hi, I have got this script that uploads images.

 

If I put the file types that are allowed to be uploads in this file, then the script works fine.

 

However, I need to call these permitted file types from an external file called definitions.php.  When I run the script it allows .gif files but not anything else. I have been working on this for hours now and am pulling my hair out, so any help is very much appreciated.

 

The script and the included file are below.

 

Script - file_upload.php

 

<?php
include("definitions.php");
if ((($_FILES["file"]["type"] == $file1) ||
($_FILES["file"]["type"] == $file2) ||
($_FILES["file"]["type"] == $file3) ||
($_FILES["file"]["type"] == $file4) ||
($_FILES["file"]["type"] == $file5))
&& ($_FILES["file"]["size"] < 50000))
  {
   $UploadDir = "../../members/uploads/";
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
       if (file_exists($UploadDir . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      $UploadDir . $_FILES["file"]["name"]);
      $image = ($UploadDir . $_FILES["file"]["name"]);
      echo "<img src=$image>"; 
      
      }
    }
    else {
    echo "Invalid File";
    }
    ?>

 

definitions.php

 

<?php
$file1 = "image/jpg";
$file2 = "image/gif";
$file3 = "image/tiff";
$file4 = "image/png";
$file5 = "image/bmp";
?>

 

Thanks

Link to comment
https://forums.phpfreaks.com/topic/153386-file-upload-problem/
Share on other sites

Your code is technically correct. It is likely that the other files you are attempting to upload don't match any of the values or their size is greater than 50000 or there is an upload error - http://us.php.net/manual/en/features.file-upload.errors.php

 

That code -

 

1) Should test for upload errors before using any of the uploaded $_FILES information.

2) Should use an array of acceptable types and then use the in_array() function to test if the type is in the array.

3) Should test the type and the size separately and output a different message for each test that fails. The way it is now you have no idea which test, type or size, failed.

4) The error message should display the value that failed so that you have feedback as to why the test failed. Different browsers send different mime types for the same file.

 

Short answer: Your code is not doing anything to tell you why the upload failed, what makes you think someone in a forum can?

Link to comment
https://forums.phpfreaks.com/topic/153386-file-upload-problem/#findComment-805859
Share on other sites

Hi, thanks for your reply. It turned out to be that instead of

 

image/jpg

 

it had to be

 

image/pjpeg

 

Now I am having the same problem with

 

image/png

 

but image/ppng does not work. What is the case here, and why do the standard file names not work in all cases?

 

Thanks

Link to comment
https://forums.phpfreaks.com/topic/153386-file-upload-problem/#findComment-805887
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.