PHP Datei Upload bereitet Probleme

Ansics

Cadet 4th Year
Registriert
Mai 2003
Beiträge
107
Hallo Leute,

ich habe hier eine Klasse "Upload" welche einige Funktionalität für den Upload für Dateien zur Verfügung stellt. Ich verwendet die Funktion getFileName um mir den Dateinamen der hochgeladenen Datei zu holen.
Jetzt kommt das Problem:

In meiner lokalen Apache Umgebung funktioniert alles. Auf dem Zielserver (Windows) funktioniert FAST alles. Die Datei wird hochgeladen, aber der Dateiname wird nicht ermittelt und somit wird ein leeres Feld in die Datenbank gespeichert und man kann die Datei als Besucher der Page nicht runterladen weil dann im Wuellcode sowas steht:
Code:
<a href=''>beispiel</a>

Ich hab hier den Code der Klasse Upload:

PHP:
<?php

class Upload
{
  var $upload_tmp_dir;  // leading and trailing slash required
  var $file_upload_flag;
  var $upload_max_filesize;

  var $uploadDir;  // leading and trailing slash required
  var $filesArrayName;

  function Upload($filesArrayName, $uploadDir)
  {
     $this->upload_dir = $uploadDir;
     $this->filename = $_FILES[$this->filesArrayName]['name'];
     if(is_null($_FILES[$filesArrayName]))
     {
         echo "Specified file <strong> ".$name." </strong> does not exist in the FILES array. Please check if it exists";
         echo "Exiting...";
         exit;
     }

     $this->upload_tmp_dir = ini_get('upload_tmp_dir');
     $this->file_upload_flag = ini_get('file_uploads');
     $this->upload_max_filesize = preg_replace('/M/', '000000', ini_get('upload_max_filesize'));

     if( $this->file_upload_flag == "off" )
     {
       echo "File upload capability in the configuration file is turned <strong> off </strong> . Please update the php.ini file.";
       exit;
     }

    $this->filesArrayName = $filesArrayName;
  }

  function getErrors() {
     return $_FILES[$this->filesArrayName]['error'];
  }

  function getFileSize() {
     return $_FILES[$this->filesArrayName]['size'];
  }

  function getFileName() {
     return $_FILES[$this->filesArrayName]['name'];
  }

  function getTmpName() {
     return $_FILES[$this->filesArrayName]['tmp_name'];
  }

  function checkMaxMemorySizeLimit() {
   if( $this->getFileSize() >  $this->upload_max_filesize ) {
     return true;
   }else{
     return false;
   }
  }

  function uploadFile()
  {

      if(!isset($newFileName))
          $newFileName = $this->getFileName();
      if($this->checkMaxMemorySizeLimit())
   {
       echo "File size of ".$this->getFileSize()." greater than allowable limit of ".$this->upload_max_filesize."Please change the configuration setting.";
       return;
   }else{
     if( !move_uploaded_file($this->getTmpName(), $this->upload_dir.$newFileName) ) {
         echo "Failed to upload file ".$this->getTmpName();
     }
   }
  }

    function uploadPic()
    {
        if( $this->checkMaxMemorySizeLimit() )
        {
           echo "File size of ".$this->getFileSize()." greater than allowable limit of ".$this->upload_max_filesize."Please change the configuration setting.";
           return;
        }
        else
        {
               $filenameSmall = $this->upload_dir.'.tmp_s.'.$this->getFileName();
               $filenameLarge = $this->upload_dir.'.tmp_l.'.$this->getFileName();
               $maxWidthSmall = 100;
               $maxHeightSmall = 100;
               $maxWidthLarge = 1000;
               $maxHeightLarge = 1000;

               list($widthTmp, $heightTmp) = getimagesize($this->getTmpName());

               if($widthTmp/$heightTmp >= 1) // Pic "breiter als hoch"
               {
                   $widthSmall  = $maxWidthSmall;
                   $heightSmall = $heightTmp * $widthSmall / $widthTmp;
                   $widthLarge  = $maxWidthLarge;
                   $heightLarge = $heightTmp * $widthLarge / $widthTmp;
               }
               else
               {
                   $heightSmall = $maxHeightSmall;
                   $widthSmall  = $widthTmp * $heightSmall / $heightTmp;
                   $heightLarge = $maxHeightLarge;
                   $widthLarge  = $widthTmp * $heightLarge / $heightTmp;
               }

               if(preg_match("/.jpg/i", $this->getFileName()))
               {
                   $picTmp = imagecreatefromjpeg($this->getTmpName());
                   $picSmall = imagecreatetruecolor($widthSmall, $heightSmall);
                   imagecopyresized($picSmall, $picTmp, 0, 0, 0, 0, $widthSmall, $heightSmall, $widthTmp, $heightTmp);
                   imagejpeg($picSmall, $filenameSmall);
                   $picLarge = imagecreatetruecolor($widthLarge, $heightLarge);
                   imagecopyresized($picLarge, $picTmp, 0, 0, 0, 0, $widthLarge, $heightLarge, $widthTmp, $heightTmp);
                   imagejpeg($picLarge, $filenameLarge);
               }
               else if (preg_match("/.gif/i", $this->getTmpName()))
               {

               }
               else if(preg_match("/.png/i", $this->getTmpName()))
               {

               }
        }
    }

    }


Der Codeschnipsel aus der PHP Datei, weche diese Klasse verwendet sieht so aus:

PHP:
$ul = new upload("file1","../download/");
     if($ul->uploadFile())

     $pfad = $ul->getFileName();
     $jetzt = time();
     $datenbankeintrag = "INSERT INTO downloads (titel,beschreibung,datei,datum) VALUES ('".$_POST['titel']."','".$_POST['beschreibung']."','".$pfad."',".$jetzt.")";
     $db = new DB();
     if ($db->query($datenbankeintrag)){
      $message = "Der Download wurde erfolgreich eingerichtet";
     }

Wie gesagt funktioniert hier NUR das getFileName nicht richtig :(

Wer kann mir helfen?

Gruß
Ansics
 
Zurück
Oben