www.webdeveloper.com
Page 12 of 23 FirstFirst ... 2101112131422 ... LastLast
Results 166 to 180 of 340

Thread: How to: Upload images using PHP

  1. #166
    Join Date
    Jul 2004
    Posts
    40
    Could I get some help with the query string for the URL please - I don't know where in my script it would need to go, or what would go in it!

  2. #167
    Join Date
    Oct 2007
    Posts
    76
    I've seen similar posts and wondered if anyone had found a similar solution or any suggestions on where to look in order to achieve the following:

    The single upload script works 100%, uploaded to my server and uploaded an image within moments. For someone with no PHP experience this is a godesend, i wish i actually had the time to learn it.

    I see the image once uploaded is stored in the 'uploaded_files' folder. I have a site which i'm working on and this involves displaying images, can i direct the image uploaded into a particular DIV on a particular page in the site's directory?

  3. #168
    Join Date
    Aug 2007
    Location
    London
    Posts
    410
    you mean using <img> tags? That's just straight HTML.

  4. #169
    Join Date
    Dec 2007
    Posts
    61
    Quote Originally Posted by adam_fake
    I've seen similar posts and wondered if anyone had found a similar solution or any suggestions on where to look in order to achieve the following:

    The single upload script works 100%, uploaded to my server and uploaded an image within moments. For someone with no PHP experience this is a godesend, i wish i actually had the time to learn it.

    I see the image once uploaded is stored in the 'uploaded_files' folder. I have a site which i'm working on and this involves displaying images, can i direct the image uploaded into a particular DIV on a particular page in the site's directory?

    you can try by adding a link to the'uploaded_files' folder, in the upload.success.php file.

    in my file, i added a link to the folder and another link to go back to the upload form.

    PHP Code:
    <?php

    // filename: upload.success.php

    ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">

    <html lang="en">
        <head>
            <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
            
            
            
            <title>Successful upload</title>
        
        </head>
        
        <body>
        
            <div id="Upload">
                <h1 align="center"><font size="5" face="Arial Black">UPLOAD DONE</font></h1>

                <p align="center">To start again, click <i>
                <b><a href="http://[LINK-TO-UPLOAD-FORM-HERE]">HERE!</a></b></i></p>
                <p align="center">To go to uploades dir, click <i>
                <b><a href="http://[LINK-TO-UPLOADED-DIR-HERE]">here!</a></b></i></p>
            </div>
        
        </body>

    </html>

    tested on IE6, 7, and Mozilla Firefox (current version 1.8.20071.12718)


    let me know if it works for you, if that's what you need of course.

  5. #170
    Join Date
    Mar 2006
    Location
    Liverpool, UK
    Posts
    278
    Hi everyone, the code works a treat ive managed to resize the images place the reference in a database etc. However my problem is on the multiple upload if a user is uploading ten images and the fifth image creates an error then the remaining images are not uploaded properly as the script escapes i.e. to the error page.

    Now what Im wanting to do is implement an extension of the script which takes the image name, id and error which is then displayed after the script has attempted to upload all images.

    Is this possible to do and if so are session variables my best bet.

    Regards

    Miguel

  6. #171
    Join Date
    Jan 2005
    Location
    Alicante (Spain)
    Posts
    7,742
    Not really without a major rewrite. Easiest would be modify the error handler behaviour, when a dodgy image is found remove it from the $active_keys array and place it in another array ($errors, or something like that) and then handle the errors once the rest of the script has been executed.

  7. #172
    Join Date
    Mar 2006
    Location
    Liverpool, UK
    Posts
    278
    Og right, think this is an impossible one if you say so ha. The problem is im creating a CMS which allows admininstrators to upload images. Basically I know what images will be passed, however you can bet they will attempt to upload an invalid image.

    How would you go about removing the image from the active keys?

    Also what I was thinking would work is:

    PHP Code:
    // check that the file we are working on really was an HTTP upload 
    foreach($active_keys as $key

        @
    is_uploaded_file($_FILES[$fieldname]['tmp_name'][$key]) 
            or (
    $_SESSION['rejectedimages'][] = $_FILES[$fieldname]['tmp_name'][$key].' not an HTTP upload'); 

    and then when the script is finished the session variable is read on the success page. Now the above goes to the sucess page even if the error is true, however the image is still uploaded so I think that where your remove from array comes in.

    Cheers Bokeh

    Miguel

  8. #173
    Join Date
    Jan 2005
    Location
    Alicante (Spain)
    Posts
    7,742
    Quote Originally Posted by cs3mw
    How would you go about removing the image from the active keys?
    PHP Code:
    foreach($active_keys as $key)
    {
        if(
    'something is wrong with key')
        {
            unset(
    $active_keys($key));
        }


  9. #174
    Join Date
    Mar 2006
    Location
    Liverpool, UK
    Posts
    278
    Im extremely grateful for your input into this dilema Im having. In your suggestion you use a If statement to say "if there is something wrong with the image" do this. However Im wondering is the below code not an example of this.

    In simple terms, im checking to see if the upload is an image and if not put the message in the session and then remove the image from the active key. However this isnt working. Have you any ideas or is my syntax wrong after the Or bit.

    foreach($active_keys as $key)
    {
    @getimagesize($_FILES[$fieldname]['tmp_name'][$key])
    or (
    $_SESSION['rejectedimage'][] = "This is not an image";
    unset($active_keys($key));

    }

    Im sorry to harp on about this but im pretty desperate for it to work.

    Regards Mike

  10. #175
    Join Date
    Mar 2006
    Location
    Liverpool, UK
    Posts
    278
    Apoligies correctly formatted

    In simple terms, im checking to see if the upload is an image and if not put the message in the session and then remove the image from the active key. However this isnt working. Have you any ideas or is my syntax wrong after the Or bit.

    PHP Code:
    foreach($active_keys as $key

        @
    getimagesize($_FILES[$fieldname]['tmp_name'][$key]) 
            or (
    [
    INDENT][INDENT]$_SESSION['rejectedimage'][] = "This is not an image";[/INDENT][/INDENT]
    [
    INDENT][INDENT]unset($active_keys($key));[/INDENT][/INDENT]


    Im sorry to harp on about this but im pretty desperate for it to work.

    Regards Mike

  11. #176
    Join Date
    Jan 2005
    Location
    Alicante (Spain)
    Posts
    7,742
    Yes but you need to do this at every step and you need to keep note of which images had the problem so you can advise the client. Easier would be write a new error handler that does this but doesn't kill the script.

  12. #177
    Join Date
    Mar 2006
    Location
    Liverpool, UK
    Posts
    278
    So in the error handler in pseudo code the error handler should;

    Record the error in a session variable;
    Record the image id in a session variable;
    Remove the $key from the active keys but then go back to the same place in the script before an error was noticed.

    This is the aspect Im stumped with. Would you suggest placing each of the for loops in an individual function then when an error does occur send the function name to the event handler so that it know what function to return to if there is an error.

    Thanks

  13. #178
    Join Date
    Jan 2005
    Location
    Alicante (Spain)
    Posts
    7,742
    You could do it with a function. The function would hold all the code to process one individual image. The function would be called once for each image. It would return true on success, and false (or an error code) on failure. Or it could write the error code directly to a SESSION variable.

  14. #179
    Join Date
    Mar 2006
    Location
    Liverpool, UK
    Posts
    278
    Sort of understand what you mean I'll have a go at it tomorrow. Too much of a long day today!! so rather than what you have done in the original script you would do the for each of the for loops after another for each image rather than do the first FOR loop for all the images, then the second for all etc.

    OK think I know where Im going with this. Cheers Bokeh!!

  15. #180
    Join Date
    May 2007
    Posts
    20
    this is my modified upload.processor.php

    Code:
    <?php
    include("files/dblines.php");
    
    /*===================================text insert====================*/
    if(($_POST['platenumber']=="")
      && ($_POST['carmake']=="")
      && ($_POST['carmodel']=="")
      && ($_POST['classcar']=="")
      && ($_POST['caryear']=="")
      && ($_POST['enginetype']=="")
      && ($_POST['maxpower']=="")
      && ($_POST['fueltype']=="")
      && ($_FILES['picture']=="")
      && ($_POST['price']==""))
    {
      printf("<h2 class=\"messages\">ERROR: Please enter all the required information for new vehicle.</h2>");
    }
    else
    {  
      $singleinput = 1;
      $columnnames = "";
      $columnvalues = "";
      
      if(isset($_REQUEST['platenumber']))
      {
        $platenumber = stripslashes(trim($_REQUEST['platenumber']));
        
        if($singleinput)
        {
          $columnnames .= "`platenumber`";
          $columnvalues .= "'{$platenumber}'";
          $singleinput = 0;
        }
        else
        {
          $columnnames .= ",`platenumber`";
          $columnvalues .= ",'{$platenumber}'";
          $singleinput = 0;
        }
      }
      if(isset($_REQUEST['carmake']))
      {
        $carmake = stripslashes(trim($_REQUEST['carmake']));
        
        if($singleinput)
        {
          $columnnames .= "`make`";
          $columnvalues .= "'{$carmake}'";
          $singleinput = 0;
        }
        else
        {
          $columnnames .= ",`make`";
          $columnvalues .= ",'{$carmake}'";
          $singleinput = 0;
        }
      }
      if(isset($_REQUEST['carmodel']))
      {
        $carmodel = stripslashes(trim($_REQUEST['carmodel']));
        
        if($singleinput)
        {
          $columnnames .= "`model`";
          $columnvalues .= "'{$carmodel}'";
          $singleinput = 0;
        }
        else
        {
          $columnnames .= ",`model`";
          $columnvalues .= ",'{$carmodel}'";
          $singleinput = 0;
        }
      }
      if(isset($_REQUEST['classcar']))
      {
        $classcar = stripslashes(trim($_REQUEST['classcar']));
        
        if($singleinput)
        {
          $columnnames .= "`carclass`";
          $columnvalues .= "'{$classcar}'";
          $singleinput = 0;
        }
        else
        {
          $columnnames .= ",`carclass`";
          $columnvalues .= ",'{$classcar}'";
          $singleinput = 0;
        }
      }
      if(isset($_REQUEST['caryear']))
      {
        $caryear = stripslashes(trim($_REQUEST['caryear']));
        
        if($singleinput)
        {
          $columnnames .= "`caryear`";
          $columnvalues .= "'{$caryear}'";
          $singleinput = 0;
        }
        else
        {
          $columnnames .= ",`caryear`";
          $columnvalues .= ",'{$caryear}'";
          $singleinput = 0;
        }
      }
      if(isset($_REQUEST['enginetype']))
      {
        $enginetype = stripslashes(trim($_REQUEST['enginetype']));
        
        if($singleinput)
        {
          $columnnames .= "`enginetype`";
          $columnvalues .= "'{$enginetype}'";
          $singleinput = 0;
        }
        else
        {
          $columnnames .= ",`enginetype`";
          $columnvalues .= ",'{$enginetype}'";
          $singleinput = 0;
        }
      }
      if(isset($_REQUEST['maxpower']))
      {
        $maxpower = stripslashes(trim($_REQUEST['maxpower']));
        
        if($singleinput)
        {
          $columnnames .= "`maxpower`"; 
          $columnvalues .= "'{$maxpower}'";
          $singleinput = 0;
        }
        else
        {
          $columnnames .= ",`maxpower`"; 
          $columnvalues .= ",'{$maxpower}'";
          $singleinput = 0;
        }
      }
      if(isset($_REQUEST['fueltype']))
      {
        $fueltype = stripslashes(trim($_REQUEST['fueltype']));
        
        if($singleinput)
        {
          $columnnames .= "`fueltype`"; 
          $columnvalues .= "'{$fueltype}'";
          $singleinput = 0;
        }
        else
        {
          $columnnames .= ",`fueltype`"; 
          $columnvalues .= ",'{$fueltype}'";
          $singleinput = 0;
        }
      }
      if(isset($_REQUEST['price']))
      {
        $price = stripslashes(trim($_REQUEST['price']));
        
        if($singleinput)
        {
          $columnnames .= "`price`";
          $columnvalues .= "'{$price}'";
          $singleinput = 0;
        }
        else
        {
          $columnnames .= ",`price`";
          $columnvalues .= ",'{$price}'";
          $singleinput = 0;
        }
      }
      //$sql_insertion_data = "INSERT INTO `cars` ($columnnames) VALUES($columnvalues)";
      //mysql_query($sql_insertion_data) or die(mysql_error());
    }
    /*===================================image upload===================*/
    // filename: upload.processor.php
    
    // first let's set some variables
    
    // make a note of the current working directory, relative to root.
    $directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);
    
    // make a note of the directory that will recieve the uploaded file
    $uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'images/';
    
    // make a note of the location of the upload form in case we need it
    $uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'admin.php';
    
    // make a note of the location of the success page
    $uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'upload.success.php';
    
    // fieldname used within the file <input> of the HTML form
    $fieldname = 'picture';
    
    // Now let's deal with the upload
    
    // possible PHP upload errors
    $errors = array(1 => 'php.ini max file size exceeded',
                    2 => 'html form max file size exceeded',
                    3 => 'file upload was only partial',
                    4 => 'no file was attached');
    
    // check the upload form was actually submitted else print the form
    isset($_POST['submit'])
        or error('the upload form is needed', $uploadForm);
    
    // check for PHP's built-in uploading errors
    ($_FILES[$fieldname]['error'] == 0)
        or error($errors[$_FILES[$fieldname]['error']], $uploadForm);
        
    // check that the file we are working on really was the subject of an HTTP upload
    @is_uploaded_file($_FILES[$fieldname]['tmp_name'])
        or error('not an HTTP upload', $uploadForm);
        
    // validation... since this is an image upload script we should run a check  
    // to make sure the uploaded file is in fact an image. Here is a simple check:
    // getimagesize() returns false if the file tested is not an image.
    @getimagesize($_FILES[$fieldname]['tmp_name'])
        or error('only image uploads are allowed', $uploadForm);
        
    // make a unique filename for the uploaded file and check it is not already
    // taken... if it is already taken keep trying until we find a vacant one
    // sample filename: 1140732936-filename.jpg
    $now = time();
    while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name']))
    {
        $now++;
    }
    //name var for image
    $imagename = $now.'-'.$_FILES[$fieldname]['name']; 
    
    // now let's move the file to its final location and allocate the new filename to it
    @move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename)
        or error('receiving directory insuffiecient permission', $uploadForm);
    
    //in addition to Bokeh's script you can insert each record into a database.
    if(($columnnames == "")&&($columnvalues == ""))
    {//insert image only
      $q = "INSERT INTO `cars` (`picture`) VALUES ('$uploadFilename')";
      $s = mysql_query($q);
    }
    // insert other info and image
    else
    {
      $columnnames .= ",`picture`";
      $columnvalues .= "'{$uploadfilename}'";
      $q = "INSERT INTO `cars` ($columnnames) VALUES ($columnvalues)";
      $s = mysql_query($q);
    }
    //if an error
    echo(mysql_error()); 
    
    // If you got this far, everything has worked and the file has been successfully saved.
    // We are now going to redirect the client to a success page.
    header('Location: ' . $uploadSuccess);
    
    // The following function is an error handler which is used
    // to output an HTML error page if the file upload fails
    function error($error, $location, $seconds = 5)
    {
        header("Refresh: $seconds; URL=\"$location\"");
        echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'."\n".
        '"http://www.w3.org/TR/html4/strict.dtd">'."\n\n".
        '<html lang="en">'."\n".
        '    <head>'."\n".
        '        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n".
        '        <link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n".
        '    <title>Upload error</title>'."\n\n".
        '    </head>'."\n\n".
        '    <body>'."\n\n".
        '    <div id="Upload">'."\n\n".
        '        <h1>Upload failure</h1>'."\n\n".
        '        <p>An error has occured: '."\n\n".
        '        <span class="red">' . $error . '...</span>'."\n\n".
        '         The upload form is reloading</p>'."\n\n".
        '     </div>'."\n\n".
        '</html>';
        exit;
    } // end error handler
    
    ?>
    and this is the error i'm getting

    Column count doesn't match value count at row 1
    Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\dandd\upload.processor.php:256) in C:\xampp\htdocs\dandd\upload.processor.php on line 260
    what am i doing wrong?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles