Jump to content

Archived

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

fengyuboy

Help! uploading function failure on a sftp server

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!

Share this post


Link to post
Share on other sites
Are write pernissions correctly set for the target folder?

Share this post


Link to post
Share on other sites
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]

Share this post


Link to post
Share on other sites
[quote author=AndyB link=topic=106672.msg426814#msg426814 date=1157234168]
Are write pernissions correctly set for the target folder?
[/quote]
how to set that?

Share this post


Link to post
Share on other sites
[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.

Share this post


Link to post
Share on other sites

×

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.