TalkPHP

TalkPHP (http://www.talkphp.com/forums.php)
-   General (http://www.talkphp.com/general/)
-   -   Uploading a Image (http://www.talkphp.com/general/1342-uploading-image.html)

Shane 10-25-2007 05:52 PM

Uploading a Image
 
I have written a upload script and I ran into a small problem I didn't even think about. Say someone uploads logo.gif, if another person comes about and has a logo.gif they wanna upload then it already exsits. Is their anyway to add characters to the name while it is uploading so if logo.gif exsits and another person uploads that then it might generate logo1a12.gif or something? :D

Wildhoney 10-25-2007 06:22 PM

This function will count up until it finds an empty slot. Good if you want to keep your images in order, else just generate a random file name.

Basically:

Input image: myLogo.jpg
If myLogo.jpg exists change to myLogo.2.jpg
If myLogo.2.jpg doesn't exist, return myLogo.2.jpg

PHP Code:

define('DIRECTORY''./images/');

function 
getImageName($szImage)
{
    
$iIndex 2;
    
    if(!
file_exists(DIRECTORY $szImage))
    {
        return 
$szImage;
    }
    
    
$aParts explode('.'$szImage);
    
    if(
count($aParts) <= 1)
    {
        return 
$szImage;
    }
    
    
$szExt end($aParts);
    
$iCount count($aParts);
    
    
$aParts[$iCount 1] = $iIndex;
    
$aParts[$iCount] = $szExt;
    
    do { 
$aParts[count($aParts) - 2] = $iIndex++; }
    while(
file_exists(DIRECTORY implode('.'$aParts)));
    
    return 
implode('.'$aParts);



Shane 10-25-2007 08:01 PM

I tried what you were saying. I might not be doing it right, but its just overwritting the ones that are already upload.

PHP Code:

<?php

$upload_dir 
"images/";   
$size_bytes 524880// = 5 megabytes(MB)
$limit_file_type "yes"
$allowed_file_type = array('image/gif',
                          
'image/pjpeg',
                          
'image/jpeg',
                          
'image/png',
                          
'image/jpg');

         
//check if the directory exist or not.
         
if (!is_dir("$upload_dir")) {
     die (
"The directory <b>($upload_dir)</b> doesn't exist");
         }
         
//check if the directory is writable.
         
if (!is_writeable("$upload_dir")){
            die (
"The directory <b>($upload_dir)</b> is NOT writable, Please Chmod (777)");
         }

//Check first if a file has been selected
//is_uploaded_file('filename') returns true if
//a file was uploaded via HTTP POST. Returns false otherwise.
if (is_uploaded_file($_FILES['filetoupload']['tmp_name']))
{
//begin of is_uploaded_file

        //Get the Size of the File
        
$size $_FILES['filetoupload']['size'];
        
//Make sure that $size is less than 1MB (1000000 bytes)
        
if ($size $size_bytes)
        {
            echo 
"File Too Large. File must be <b>$size_bytes</b> bytes.";
            exit();
        }
             
//check file type
        
if (($limit_file_type == "yes") && (!in_array($_FILES['filetoupload']['type'],$allowed_file_type)))
        {
            echo
"wrong file type";
            exit();
        }

        
// $filename will hold the value of the file name submetted from the form.
        
$filename =  $_FILES['filetoupload']['name'];
        
// Check if file is Already EXISTS.


define('DIRECTORY''./images/');

function 
getImageName($szImage)
{
    
$iIndex 2;
    
    if(!
file_exists(DIRECTORY $szImage))
    {
        return 
$szImage;
    }
    
    
$aParts explode('.'$szImage);
    
    if(
count($aParts) <= 1)
    {
        return 
$szImage;
    }
    
    
$szExt end($aParts);
    
$iCount count($aParts);
    
    
$aParts[$iCount 1] = $iIndex;
    
$aParts[$iCount] = $szExt;
    
    do { 
$aParts[count($aParts) - 2] = $iIndex++; }
    while(
file_exists(DIRECTORY implode('.'$aParts)));
    
    return 
implode('.'$aParts);



        
//Move the File to the Directory of your choice
        //move_uploaded_file('filename','destination') Moves afile to a new location.
        
if (move_uploaded_file($_FILES['filetoupload']['tmp_name'],$upload_dir.$filename)) {

           
//tell the user that the file has been uploaded and make him alink too;).
           
echo "File (<a href=$upload_dir$filename>$filename</a>) uploaded!";
           exit();

        }
        else
        {
            
//Print error
            
echo "There was a problem moving your file";
            exit();
        }
}
//end of is_uploaded_file


?>


Wildhoney 10-25-2007 08:12 PM

You need to get the image name from calling the function, like so:

PHP Code:

$filename =  getImageName($_FILES['filetoupload']['name']); 

Then just change:

PHP Code:

define('DIRECTORY''./images/'); 

To reflect the area where you're uploading the images to.

Shane 10-25-2007 09:04 PM

Code:

define('DIRECTORY', 'images/');
function getImageName($szImage)
{
$filename =  getImageName($_FILES['filetoupload']['name']);
    $iIndex = 2;
   
    if(!file_exists(DIRECTORY . $szImage))
    {
        return $szImage;
    }
   
    $aParts = explode('.', $szImage);
   
    if(count($aParts) <= 1)
    {
        return $szImage;
    }
   
    $szExt = end($aParts);
    $iCount = count($aParts);
   
    $aParts[$iCount - 1] = $iIndex;
    $aParts[$iCount] = $szExt;
   
    do { $aParts[count($aParts) - 2] = $iIndex++; }
    while(file_exists(DIRECTORY . implode('.', $aParts)));
   
    return implode('.', $aParts);
}


Wildhoney 10-25-2007 09:28 PM

No offence intended, Shane, but I really think you need to read up on how functions work. Try this resource at PHP.net. Spend a good time reading through and learning it inside-out.

Essentially you need to call the function, this is done by placing $filename = getImageName($_FILES['filetoupload']['name']) outside of the function.

Shane 10-25-2007 11:01 PM

For some reason I was thinking that calling it where I did would do what I was needing. I'm very novice when it comes to php and screw up way to much! I fixed the problem by reading the tutorial and now understand 100%! Appreciate all of your help wildhoney!


All times are GMT. The time now is 09:22 AM.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0