#1
  1. No Profile Picture
    Junior Member
    Devshed Newbie (0 - 499 posts)

    Join Date
    Mar 2001
    Posts
    5
    Rep Power
    0

    Question


    I have a question about using images with PHP/MySQL.

    I have used PHP/MySQL with simple form submissions, queries with a MySQL database. However, I was wondering how you would incorporate uploading images to either a database or an image folder.

    That is, I want to have a form that has some basic info (name, date, time etc) but I also want the user to be able to attach an imagefile (likely a jpg) to be submitted as part of the form data.

    Is this a good idea or is there a better way of doing it. Basically, I thought the user could just do a search for the image file located on their hard-drive as part of the form. Is there a PHP function for this? If so, would the image then be sent to the database or an image folder - with a "link" to the image stored in the database?

    Any tips, comments or suggestions would be appreciated.

    Thanks.
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Mar 2001
    Location
    New Zealand
    Posts
    167
    Rep Power
    14

    php file upload


    Hi there,

    This won't solve everything, but at least it's partly along the way!

    This is a php script from phpbuilder.com I use in a user-input form to allow them to upload certain specified types/dimensions of files. If you're looking for more advice on this topic, I suggest reading the phpbuilder.com tutorial on the subject.



    <?php

    $my_max_file_size = "102400"; # in bytes
    $image_max_width = "115"; # in pixels
    $image_max_height = "43"; # in pixels

    ?>

    <?php

    $the_path = "/usr/local/upload/files";

    ?>

    <?php

    $registered_types = array(
    "application/x-gzip-compressed" => ".tar.gz, .tgz",
    "application/x-zip-compressed" => ".zip",
    "application/x-tar" => ".tar",
    "text/plain" => ".html, .php, .txt, .inc (etc)",
    "image/bmp" => ".bmp, .ico",
    "image/gif" => ".gif",
    "image/pjpeg" => ".jpg, .jpeg",
    "image/jpeg" => ".jpg, .jpeg",
    "application/x-shockwave-flash" => ".swf",
    "application/msword" => ".doc",
    "application/vnd.ms-excel" => ".xls",
    "application/octet-stream" => ".exe, .fla (etc)"
    ); # these are only a few examples, you can add as many as you like

    ?>

    <?php

    $allowed_types = array("image/bmp","image/gif","image/pjpeg","image/jpeg");

    ?>

    <?php

    function form($error=false) {

    global $PHP_SELF,$my_max_file_size;

    if ($error) print $error . "<br><br>";

    print "\n<form ENCTYPE=\"multipart/form-data\" action=\"" . $PHP_SELF . "\" method=\"post\">";
    print "\n<INPUT TYPE=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"" . $my_max_file_size . "\">";
    print "\n<INPUT TYPE=\"hidden\" name=\"task\" value=\"upload\">";
    print "\n<P>Upload a file";
    print "\n<BR>NOTE: Max file size is " . ($my_max_file_size / 1024) . "KB";
    print "\n<br><INPUT NAME=\"the_file\" TYPE=\"file\" SIZE=\"35\"><br>";
    print "\n<input type=\"submit\" Value=\"Upload\">";
    print "\n</form>";

    } # END form

    ?>

    <?php

    if (!ereg("^4",phpversion())) {
    function in_array($needle,$haystack) { # we have this function in PHP4, so for you PHP3 people
    for ($i=0; $i < count($haystack); $i++) {
    if ($haystack[$i] == $needle) {
    return true;
    }
    }
    }
    }

    ?>

    <?php

    function validate_upload($the_file) {

    global $my_max_file_size, $image_max_width, $image_max_height,$allowed_types,$the_file_type,$registered_types;

    $start_error = "\n<b>Error:</b>\n<ul>";

    if ($the_file == "none") { # do we even have a file?

    $error .= "\n<li>You did not upload anything!</li>";

    } else { # check if we are allowed to upload this file_type

    if (!in_array($the_file_type,$allowed_types)) {
    $error .= "\n<li>The file that you uploaded was of a ".
    "type that is not allowed, you are only
    allowed to upload files of the type:\n<ul>";
    while ($type = current($allowed_types)) {
    $error .= "\n<li>" . $registered_types[$type] . " (" . $type . ")</li>";
    next($allowed_types);
    }
    $error .= "\n</ul>";
    }

    if (ereg("image",$the_file_type) && (in_array($the_file_type,$allowed_types))) {

    $size = GetImageSize($the_file);
    list($foo,$width,$bar,$height) = explode("\"",$size[3]);

    if ($width > $image_max_width) {
    $error .= "\n<li>Your image should be no wider than " .
    $image_max_width . " Pixels</li>";
    }

    if ($height > $image_max_height) {
    $error .= "\n<li>Your image should be no higher than " .
    $image_max_height . " Pixels</li>";
    }

    }

    if ($error) {
    $error = $start_error . $error . "\n</ul>";
    return $error;
    } else {
    return false;
    }
    }
    } # END validate_upload

    ?>

    <?php

    function list_files() {

    global $the_path;

    $handle = dir($the_path);
    print "\n<b>Uploaded files:</b><br>";
    while ($file = $handle->read()) {
    if (($file != ".") && ($file != "..")) {
    print "\n" . $file . "<br>";
    }
    }
    print "<hr>";
    }

    ?>

    <?php

    function upload($the_file) {

    global $the_path,$the_file_name;

    $error = validate_upload($the_file);
    if ($error) {
    form($error);
    } else { # cool, we can continue
    if (!@copy($the_file, $the_path . "/" . $the_file_name)) {
    form("\n<b>Something barfed, check the path to and ".
    "the permissions for the upload directory</b>");
    } else {
    list_files();
    form();
    }
    }
    } # END upload

    ?>

    <?php

    print "<html>\n<head>\n<title>Upload example</title>\n</head>\n<body>";

    switch($task) {
    case 'upload':
    upload($the_file);
    break;
    default:
    form();
    }

    print "\n</body>\n</html>";

    ?>

IMN logo majestic logo threadwatch logo seochat tools logo