phpbar.de logo

Mailinglisten-Archive

[php] Universale Upload Funktion - erledigt

[php] Universale Upload Funktion - erledigt

Swiss4.com webmaster at swiss4.com
Die Mai 4 17:36:37 CEST 2004


Ole,

Besten Dank für die Informationen.
Falls jemand nicht die PEAR Upload Klasse verwenden möchte, habe ich meine
Lösung auch noch hingeschrieben. Kritik und Vorschläge sind erwünscht!

>From: "Gerd Terlutter" <gerd at MplusB.de> wrote:
>
>auf pear gibt es HTTP_Upload[0], alternativ auch HTML_QuickForm[1].
>beide bieten dir die möglichkeit von upload, habe bisher aber erst einen
>upload selber realisiert und mich nicht in deren funktionen
>eingearbeitet. fuer ein aktuelles projekt verwende ich gerade [1], bin
>aber noch bei der basisfunktionalitaet.
>
>Gruss,
>Gerd
>[0]http://pear.php.net/package/HTTP_Upload
>[1]http://pear.php.net/package/HTML_QuickForm
>


/**
* uploads files
*
* @global   array $_CONFIG
* @global   array $_FILES
* @return   boolean false if error
*/
function uploader()
{
 global $_CONFIG;

 $path = $_CONFIG['documentRoot'].$_CONFIG['coreContentImageDir'];
 if(isset($_FILES) AND is_array($_FILES))
 {
  $filesKeys = array_keys($_FILES);
  foreach ($filesKeys as $fileName)
  {
   $fname = cleanFileName($_FILES[$fileName]['name']);
   $fsize = $_FILES[$fileName]['size'];
   $ftemp = $_FILES[$fileName]['tmp_name'];
   if(!empty($ftemp))
   {
    while(file_exists($path.$fname))
    {
     $rand =time();
     $fname = $rand.$fname;
    }
    if(!eregi(".php",$fname))
    {
     if(!move_uploaded_file($ftemp,$path.$fname))
     {
      return false;
     }
    }
   }
  }
 }
 return true;
}




/**
* Format a file name to be safe
*
* @param    string $file   The string file name
* @param    int    $maxlen Maximun permited string lenght
* @return   string Formatted file name
*/
function cleanFileName($name, $maxlen=250)
{
    $noalpha = 'áéíóúàèìòùäëïöüÁÉÍÓÚÀÈÌÒÙÄËÏÖÜâêîôûÂÊÎÔÛñçÇ@';
    $alpha =   'aeiouaeiouaeiouAEIOUAEIOUAEIOUaeiouAEIOUncCa';
    $name = substr ($name, 0, $maxlen);
    $name = strtr ($name, $noalpha, $alpha);
    $mixChars = array('Þ' => 'th', 'þ' => 'th', 'Ð' => 'dh', 'ð' => 'dh',
                    'ß' => 'ss', 'O' => 'oe', 'o' => 'oe', 'Æ' => 'ae',
                    'æ' => 'ae', '$' => 's',  '¥' => 'y');
    $name = strtr($name, $mixChars);
    // not permitted chars are replaced with "_"
    return ereg_replace ('[^a-zA-Z0-9,._\+\()\-]', '_', $name);
}



Gruss
Ivan







php::bar PHP Wiki   -   Listenarchive