Jump to content

Help! uploading function failure on a sftp server


fengyuboy

Recommended Posts

[code] //Function #10 (Upload The File With Validation)
function upload_file_with_validation() {
    //SECTION #1
    $temp_file_name = trim($this->temp_file_name);
    $file_name = trim(strtolower($this->file_name));
    $upload_dir = $this->get_upload_directory();
    $upload_log_dir = $this->get_upload_log_directory();
    $file_size = $this->get_file_size();
    $ip = trim($_SERVER['REMOTE_ADDR']);
    $cpu = gethostbyaddr($ip);
    $m = date("m");
    $d = date("d");
    $y = date("Y");
    $date = date("m/d/Y");
    $time = date("h:i:s A");
    $existing_file = $this->existing_file();    //<-Add On
    $valid_user = $this->validate_user();        //<-Add On
    $valid_size = $this->validate_size();        //<-Add On
    $valid_ext = $this->validate_extension();    //<-Add On

    //SECTION #2
    if (($upload_dir == "ERROR") OR ($upload_log_dir == "ERROR")) {
echo "upload directory failure or upload log directory failure";
        return false;
    }
    elseif ((((!$valid_user) OR (!$valid_size) OR (!$valid_ext) OR ($existing_file)))) {
echo "invalid user, invalid size, invalid extension, existing file";
        return false;
    } else {
        if (is_uploaded_file($temp_file_name)) {
echo $temp_file_name.$upload_dir. $file_name;
            if (move_uploaded_file($temp_file_name,$upload_dir . $file_name)) {
                $log = $upload_log_dir.$y."_".$m."_".$d.".txt";
                $fp = fopen($log,"a+");
                fwrite($fp,"
$ip-$cpu | $file_name | $file_size | $date | $time");
                fclose($fp);
                return true;
            } else {
echo "move file failure";
                return false;
            }
        } else {
echo "is not uploaded";
            return false;
        }
    }
}
}

$upload_class = new Upload_Files;
$Name_test = trim($_FILES['upload']['tmp_name']);
$upload_class->temp_file_name = trim($_FILES['upload']['tmp_name']);
$upload_class->file_name = trim(strtolower($_FILES['upload']['name']));
$upload_class->upload_dir = "/info/www/docs/bios/uploads/";
$upload_class->upload_log_dir = "/info/www/docs/bios/uploads/upload_logs";
$upload_class->max_file_size = 512000;
$upload_class->banned_array = array("");
$upload_class->ext_array = array(".jpg",".jpeg",".gif",".png");
[/code]

Here is part of the code(from the file uploading class tutorial),
I tested this code on a sftp server, and the file could not be uploaded due to the move_uploaded_file() function fails. I guess there are some restrictions on the server. I have the login username and password, Is there anyway that I can put that in my code to enable file uploading?Just like a piece of code to enable uploading and downloading by logging in the sftp server.

Thanks!
Here is the full code, file uploading class of the PHP freak tutorial.[code]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>imagevalidation</title>
</head>
<?php
class Upload_Files
{
   var $temp_file_name;
   var $file_name;
   var $upload_dir;
   var $upload_log_dir;
   var $max_file_size;
   var $banned_array;
   var $ext_array;

//Function #1
function validate_extension()
{
   //SECTION #1
   $file_name = trim($this->file_name);
   $extension = strtolower(strrchr($file_name,"."));
   $ext_array = $this->ext_array;
   $ext_count = count($ext_array);
   //SECTION #2
   if (!$file_name) {
       return false;
   } else {
       if (!$ext_array) {
           return true;
       } else {
           foreach ($ext_array as $value) {
               $first_char = substr($value,0,1);
                   if ($first_char <> ".") {
                       $extensions[] = ".".strtolower($value);
                   } else {
                       $extensions[] = strtolower($value);
                   }

           }

           //SECTION #3
           foreach ($extensions as $value) {
               if ($value == $extension) {
                   $valid_extension = "TRUE";
               }                
           }

           //SECTION #4
           if ($valid_extension) {
               return true;
           } else {
               return false;
           }
       }
   }
}
//Function #2
function validate_size()
{
   $temp_file_name = trim($this->temp_file_name);
   $max_file_size = trim($this->max_file_size);

   if ($temp_file_name) {
       $size = filesize($temp_file_name);
           if ($size > $max_file_size) {
               return false;                                                        
           } else {
               return true;
           }
   } else {
       return false;
   }    
}
//Function #3
function existing_file() {
   $file_name = trim($this->file_name);
   $upload_dir = $this->get_upload_directory();

   if ($upload_dir == "ERROR") {
       return true;
   } else {
       $file = $upload_dir . $file_name;
       if (file_exists($file)) {
           return true;
       } else {
           return false;
       }
   }    
}
//Function #4
function get_file_size() {
   //SECTION #1
   $temp_file_name = trim($this->temp_file_name);
   $kb = 1024;
   $mb = 1024 * $kb;
   $gb = 1024 * $mb;
   $tb = 1024 * $gb;

       //SECTION #2
       if ($temp_file_name) {
           $size = filesize($temp_file_name);
           if ($size < $kb) {
               $file_size = "$size Bytes";
           }
           elseif ($size < $mb) {
               $final = round($size/$kb,2);
               $file_size = "$final KB";
           }
           elseif ($size < $gb) {
               $final = round($size/$mb,2);
               $file_size = "$final MB";
           }
           elseif($size < $tb) {
               $final = round($size/$gb,2);
               $file_size = "$final GB";
           } else {
               $final = round($size/$tb,2);
               $file_size = "$final TB";
           }
       } else {
           $file_size = "ERROR: NO FILE PASSED TO get_file_size()";
       }
       return $file_size;
}
//Function #5
function get_max_size() {
   $max_file_size = trim($this->max_file_size);
   $kb = 1024;
   $mb = 1024 * $kb;
   $gb = 1024 * $mb;
   $tb = 1024 * $gb;

   if ($max_file_size) {
       if ($max_file_size < $kb) {
           $max_file_size = "max_file_size Bytes";
       }
       elseif ($max_file_size < $mb) {
           $final = round($max_file_size/$kb,2);
           $max_file_size = "$final KB";
       }
       elseif ($max_file_size < $gb) {
           $final = round($max_file_size/$mb,2);
           $max_file_size = "$final MB";
       }
       elseif($max_file_size < $tb) {
           $final = round($max_file_size/$gb,2);
               $max_file_size = "$final GB";
       } else {
           $final = round($max_file_size/$tb,2);
           $max_file_size = "$final TB";
       }
   } else {
       $max_file_size = "ERROR: NO SIZE PARAMETER PASSED TO  get_max_size()";
   }
       return $max_file_size;
}
//Function #6
function validate_user() {
   //SECTION #1
   $banned_array = $this->banned_array;
   $ip = trim($_SERVER['REMOTE_ADDR']);
   $cpu = gethostbyaddr($ip);
   $count = count($banned_array);

   //SECTION #2
   if ($count < 1) {
       return true;
   } else {
       foreach($banned_array as $key => $value) {
           if ($value == $ip ."-". $cpu) {
               return false;
           } else {
               return true;
           }
       }
   }
}
//Function #7
function get_upload_directory() {
   //SECTION #1
   $upload_dir = trim($this->upload_dir);

   //SECTION #2
   if ($upload_dir) {
       $ud_len = strlen($upload_dir);
       $last_slash = substr($upload_dir,$ud_len-1,1);
           if ($last_slash <> "/") {
               $upload_dir = $upload_dir."/";
           } else {
                   $upload_dir = $upload_dir;
           }

       //SECTION #3
       $handle = @opendir($upload_dir);
           if ($handle) {
               $upload_dir = $upload_dir;
               closedir($handle);
           } else {
               $upload_dir = "ERROR";
echo "open directory failure";
           }
   } else {
       $upload_dir = "ERROR";
   }
   return $upload_dir;
}
//Function #8 (Verify The Upload Log Directory)
function get_upload_log_directory() {
   $upload_log_dir = trim($this->upload_log_dir);
   if ($upload_log_dir) {
       $ud_len = strlen($upload_log_dir);
       $last_slash = substr($upload_log_dir,$ud_len-1,1);
           if ($last_slash <> "/") {
               $upload_log_dir = $upload_log_dir."/";
           } else {
               $upload_log_dir = $upload_log_dir;
           }
           $handle = @opendir($upload_log_dir);
               if ($handle) {
                   $upload_log_dir = $upload_log_dir;
                   closedir($handle);
               } else {
                   $upload_log_dir = "ERROR";
               }
   } else {
       $upload_log_dir = "ERROR";
   }
   return $upload_log_dir;
}

//Function #9 (Upload The File With No Validation)
function upload_file_no_validation() {
   //SECTION #1
   $temp_file_name = trim($this->temp_file_name);
   $file_name = trim(strtolower($this->file_name));
   $upload_dir = $this->get_upload_directory();
   $upload_log_dir = $this->get_upload_log_directory();
   $file_size = $this->get_file_size();
   $ip = trim($_SERVER['REMOTE_ADDR']);
   $cpu = gethostbyaddr($ip);
   $m = date("m");
   $d = date("d");
   $y = date("Y");
   $date = date("m/d/Y");
   $time = date("h:i:s A");

   //SECTION #2
   if (($upload_dir == "ERROR") OR ($upload_log_dir == "ERROR")) {
       return false;
   } else {
       if (is_uploaded_file($temp_file_name)) {
           if (move_uploaded_file($temp_file_name,$upload_dir . $file_name)) {
               $log = $upload_log_dir.$y."_".$m."_".$d.".txt";
               $fp = fopen($log,"a+");
               fwrite($fp,"
$ip-$cpu | $file_name | $file_size | $date | $time");
               fclose($fp);
               return true;
           } else {
               return false;    
           }
       } else {
           return false;
       }
   }
}

//Function #10 (Upload The File With Validation)
function upload_file_with_validation() {
   //SECTION #1
   $temp_file_name = trim($this->temp_file_name);
   $file_name = trim(strtolower($this->file_name));
   $upload_dir = $this->get_upload_directory();
   $upload_log_dir = $this->get_upload_log_directory();
   $file_size = $this->get_file_size();
   $ip = trim($_SERVER['REMOTE_ADDR']);
   $cpu = gethostbyaddr($ip);
   $m = date("m");
   $d = date("d");
   $y = date("Y");
   $date = date("m/d/Y");
   $time = date("h:i:s A");
   $existing_file = $this->existing_file();    //<-Add On
   $valid_user = $this->validate_user();        //<-Add On
   $valid_size = $this->validate_size();        //<-Add On
   $valid_ext = $this->validate_extension();    //<-Add On

   //SECTION #2
   if (($upload_dir == "ERROR") OR ($upload_log_dir == "ERROR")) {
echo "upload directory failure or upload log directory failure";
       return false;
   }
   elseif ((((!$valid_user) OR (!$valid_size) OR (!$valid_ext) OR ($existing_file)))) {
echo "invalid user, invalid size, invalid extension, existing file";
       return false;
   } else {
       if (is_uploaded_file($temp_file_name)) {
echo $temp_file_name.$upload_dir. $file_name;
           if (move_uploaded_file($temp_file_name,$upload_dir . $file_name)) {
               $log = $upload_log_dir.$y."_".$m."_".$d.".txt";
               $fp = fopen($log,"a+");
               fwrite($fp,"
$ip-$cpu | $file_name | $file_size | $date | $time");
               fclose($fp);
               return true;
           } else {
echo "move file failure";
               return false;
           }
       } else {
echo "is not uploaded";
           return false;
       }
   }
}
}
//calling functions

$upload_class = new Upload_Files;
$Name_test = trim($_FILES['upload']['tmp_name']);
$upload_class->temp_file_name = trim($_FILES['upload']['tmp_name']);
$upload_class->file_name = trim(strtolower($_FILES['upload']['name']));
$upload_class->upload_dir = "/info/www/docs/bios/uploads/";
$upload_class->upload_log_dir = "/info/www/docs/bios/uploads/upload_logs";
$upload_class->max_file_size = 512000;
$upload_class->banned_array = array("");
$upload_class->ext_array = array(".jpg",".jpeg",".gif",".png");

$valid_ext = $upload_class->validate_extension();
$valid_user = $upload_class->validate_user();
$max_size = $upload_class->get_max_size();
$file_size = $upload_class->get_file_size();
$file_exists = $upload_class->existing_file();
$valid_size = $upload_class->validate_size();

   if (!$valid_ext) {
       $result = "The file extension is invalid, please try again!";
   }
   elseif (!$valid_size) {
       $result = "The file size is invalid, please try again! The maximum file size is: $max_size and your file was: $file_size";
   }
   elseif (!$valid_user) {
       $result = "You have been banned from uploading to this server.";
   }
   elseif ($file_exists) {
       $result = "This file already exists on the server, please try again.";
   } else {
       $upload_file = $upload_class->upload_file_with_validation();
       if (!$upload_file) {
           $result = "Your file could not be uploaded!";
       } else {
           $result = "Your file has been successfully uploaded to the server.";
       }
   }

echo $result."<br/>";
include("menu.inc");
echo " to go back to the picture uploading page";



?>
<body>
</body>
</html>
[/code]
[quote author=AndyB link=topic=106672.msg426814#msg426814 date=1157234168]
Are write pernissions correctly set for the target folder?
[/quote]
Thanks, you are right, I got permissions set for the target folder, it is now fully functional.

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.