if (($_FILES["fileToUpload"]["type"] == "image/gif")
|| ($_FILES["fileToUpload"]["type"] == "image/jpeg")
|| ($_FILES["fileToUpload"]["type"] == "image/png" )
&&($_FILES["fileToUpload"]["size"] <= 100))
{
echo $_FILES["fileToUpload"]["size"] ;
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
"C:/upload/" . $_FILES["fileToUpload"]["name"]);
}
elseif (($_FILES["fileToUpload"]["type"] == "image/gif")
|| ($_FILES["fileToUpload"]["type"] == "image/jpeg")
|| ($_FILES["fileToUpload"]["type"] == "image/png" )
&&($_FILES["fileToUpload"]["size"] <= 1000000))
{
echo $_FILES["fileToUpload"]["size"] ;
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
"C:/image/" . $_FILES["fileToUpload"]["name"]);
}
else
{
echo "Files must be either JPEG, GIF, or PNG and less than 10,000 kb";
}
but my file is getting saved only in upload folder. I want if file size is less then 100kb then it should save in upload folder else it should save in image. please help
Because &&
operator has higher precedence than ||
. Use these brackets
if (($_FILES["fileToUpload"]["type"] == "image/gif"
|| $_FILES["fileToUpload"]["type"] == "image/jpeg"
|| $_FILES["fileToUpload"]["type"] == "image/png")
&& $_FILES["fileToUpload"]["size"] <= 100)
in all of your conditions. I also removed some redundant brackets, since ==
and <=
operators have higher precedence than logical operators (except !
). See also php operators precedence
You wrote: if(a || b || c && d)
. That is interpreted as if(a || b || (c && d) )
, so only PNGs will be stored in 'image' folder. Try this code:
if (($_FILES["fileToUpload"]["type"] == "image/gif")
|| ($_FILES["fileToUpload"]["type"] == "image/jpeg")
|| ($_FILES["fileToUpload"]["type"] == "image/png" )
{
if($_FILES["fileToUpload"]["size"] <= 100){
...
}elseif($_FILES["fileToUpload"]["size"] <= 1000000){
...
}else{
echo "Files must be less than 10,000 kb";
}
}else{
echo "Files must be either JPEG, GIF, or PNG";
}
Try something like:
if($_FILES["fileToUpload"]["type"] == "image/gif" || $_FILES["fileToUpload"]["type"] == "image/jpeg" || $_FILES["fileToUpload"]["type"] == "image/png"){
if($_FILES["fileToUpload"]["size"] <= 100){
echo $_FILES["fileToUpload"]["size"];
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "C:/upload/" . $_FILES["fileToUpload"]["name"]);
}elseif($_FILES["fileToUpload"]["size"] <= 1000000){
echo $_FILES["fileToUpload"]["size"] ;
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "C:/image/" . $_FILES["fileToUpload"]["name"]);
}else{
#file size error
}
}else{
echo "Files must be either JPEG, GIF, or PNG and less than 10,000 kb";
}
The value for size may be a string. I haven't tested it. But you may try this:
if (in_array($_FILES["fileToUpload"]["type"], array("image/gif", "image/jpeg", "image/png")) {
if (((int) $_FILES["fileToUpload"]["size"]) <= 100) {
echo $_FILES["fileToUpload"]["size"] ;
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
"C:/upload/" . $_FILES["fileToUpload"]["name"]);
}
elseif (((int) $_FILES["fileToUpload"]["size"]) <= 1000000)
{
echo $_FILES["fileToUpload"]["size"] ;
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
"C:/image/" . $_FILES["fileToUpload"]["name"]);
}
else
{
echo "Files must be either JPEG, GIF, or PNG and less than 10,000 kb";
}
Completely check errors.
<?php
$upload_key = 'fileToUpload';
if (isset($_FILES[$upload_key])) {
try {
$error = $_FILES[$upload_key]['error'];
switch ($error) {
case UPLOAD_ERR_INI_SIZE:
throw new Exception('Exceeded upload_max_filesize');
case UPLOAD_ERR_FORM_SIZE:
throw new Exception('Exceeded MAX_FILE_SIZE');
case UPLOAD_ERR_PARTIAL:
throw new Exception('Incomplete file uploaded');
case UPLOAD_ERR_NO_FILE:
throw new Exception('No file uploaded');
case UPLOAD_ERR_NO_TMP_DIR:
throw new Exception('No tmp directory');
case UPLOAD_ERR_CANT_WRITE:
throw new Exception('Can\'t write data');
case UPLOAD_ERR_EXTENSION:
throw new Exception('Extension error');
}
$finfo = new finfo(FILEINFO_MIME);
$name = $_FILES[$upload_key]['name'];
$tmp_name = $_FILES[$upload_key]['tmp_name'];
$size = $_FILES[$upload_key]['size'];
if ($size > 1000000)
throw new Exception('Exceeded 10000KB limit');
if (!is_uploaded_file($tmp_name))
throw new Exception('Not an uploaded file');
$type = $finfo->file($tmp_name);
if ($type === false)
throw new Exception('Failed to get MimeType');
if (
$type !== 'image/png; charset=binary' &&
$type !== 'image/jpeg; charset=binary' &&
$type !== 'image/gif; charset=binary'
)
throw new Exception('Only PNG, JPEG, GIF available');
$dir = ($size <= 100) ? 'C:/upload/' : 'C:/image/';
$new_name = $dir.$name;
if (!move_uploaded_file($tmp_name,$new_name))
throw new Exception('Failed to move uploaded file');
echo 'File successfully uploaded';
} catch (Exception $e) {
echo 'Error: '.$e->getMessage();
}
}