Return to Snippet

Revision: 25276
at March 25, 2010 08:53 by zitoloco


Initial Code
<?php
# Written by Sean Nall <all.marx {at} gmail>
# and placed into the public domain.

# @function upload_file
# 
# @param $field        string        the name of the file upload form field
# @param $dirPath    string        the relative path to which to store the file (no trailing slash)
# @param $maxSize    int            the maximum size of the file
# @param $allowed    array        an array containing all the "allowed" file mime-types
#
# @return mixed        the files' stored path on success, false on failure.
function upload_file($field = '', $dirPath = '', $maxSize = 100000, $allowed = array())
{
    foreach ($_FILES[$field] as $key => $val)
        $$key = $val; 

    if ((!is_uploaded_file($tmp_name)) || ($error != 0) || ($size == 0) || ($size > $maxSize))
        return false;    // file failed basic validation checks

    if ((is_array($allowed)) && (!empty($allowed)))
        if (!in_array($type, $allowed))  
            return false;    // file is not an allowed type

    do $path = $dirPath . DIRECTORY_SEPARATOR . rand(1, 9999) . strtolower(basename($name));
    while (file_exists($path));

    if (move_uploaded_file($tmp_name, $path))
        return $path;

    return false;
}
?>

DEMO:
<?php

if (array_key_exists('submit', $_POST))  // form has been submitted
{
    if ($filepath = upload_file('music_upload', 'music_files', 700000, array('audio/mpeg','audio/wav')))
        echo 'File uploaded to ' . $filepath;
    else
        echo 'An error occurred uploading the file... please try again.';
}
echo '    
        <form method="post" action="' .$_SERVER['PHP_SELF']. '" enctype="multipart/form-data">
            <input type="file" name="music_upload" id="music_upload" />
            <input type="submit" name="submit" value="submit" />
        </form>
    ';

print_r($_FILES);     // for debug purposes

?>

Initial URL

                                

Initial Description
Função muito boa criada por Sean Nall.

Initial Title
Upload de arquivo

Initial Tags
file

Initial Language
PHP