fhiiqm/inc/file_upload.inc.php
changeset 1 6288d5685bff
child 8 908abe8cec4d
equal deleted inserted replaced
0:ef68113ff309 1:6288d5685bff
       
     1 <?php
       
     2 
       
     3 /**
       
     4  * @author B.Schwarzer, Fritz-Haber-Institut
       
     5  * @copyright 05/2011
       
     6  */
       
     7 
       
     8 function upload($ufile, $fname, $id, $dir="documents")
       
     9 {
       
    10    /**
       
    11     * prueft Uploadfile und verschiebt es in gewaehltes Verzeichnis
       
    12     *  Parameter
       
    13     *   $ufile = upload-File: name <input>-Feld 
       
    14     * 	$fname = gewaehlter filename
       
    15     *   $id    = ID
       
    16     *   $dir   = Verzeichnisname der Upload-Files
       
    17     */
       
    18 
       
    19         $errupl1 = null;
       
    20         $errupl2 = null;
       
    21         $errupl3 = null;
       
    22 		// Test filesize, filetyp	
       
    23 		if ($_FILES[$ufile]["size"] < 1) $errupl1 .= "$ufile: File ist leer! ";
       
    24 		if ($_FILES[$ufile]["size"] > 6000000) $errupl1 .= "$ufile: File > 6MByte! ";
       
    25 //		list($first,$rest) = explode(".",$_FILES[$ufile]["name"]);
       
    26 		$filep = explode(".",$_FILES[$ufile]["name"]);
       
    27 		$anz    = count($filep);
       
    28       	$typ   = $filep[$anz-1];
       
    29 		if (substr($typ,0,2)=="ph" || substr($typ,0,2)=="pl" || substr($typ,0,2)=="cg" || substr($typ,0,2)=="ex") $errupl2 .="$ufile: falscher Filetyp! ";
       
    30 //echo "filesize=" . $_FILES[$ufile]["size"] . "<br>\n";
       
    31 		if ($_FILES[$ufile]["error"] > 0) $errupl3 = "Fehler upload: ".$_FILES[$ufile]["error"];
       
    32 		if (!$errupl1 && ! $errupl2 && !$errupl3)
       
    33 		{
       
    34 			// File laden
       
    35 			$filetyp = $_FILES[$ufile]['type'];
       
    36 			$filesize = $_FILES[$ufile]['size'];
       
    37 			$filename = basename(addslashes($_FILES[$ufile]["name"]));				
       
    38 			$tempname = $_FILES[$ufile]['tmp_name'];
       
    39 			if ($fname)
       
    40             {
       
    41                   $ret = move_uploaded_file ( $tempname, $dir."/".$id."_".$fname);
       
    42             }
       
    43             else    
       
    44                 $ret = move_uploaded_file ( $tempname, $dir."/".$id."_".$filename);
       
    45 
       
    46 			if ($ret)
       
    47 			{		
       
    48 	//				echo "Error upload: ". $_FILES['pfile']['error'] .", $tempname<br>\n";
       
    49                 if ($fname) $fname=$id."_".$fname; else $fname = $id."_".$filename;
       
    50    				echo "<p class=\"green\">Upload von '" . $_FILES[$ufile]["name"]."' erfolgreich.<br>
       
    51                     gespeicherter Dateiname: '". $fname ."'</p>\n";
       
    52 				return true;
       
    53 			}
       
    54 			else
       
    55 			{
       
    56 				echo "<p class=\"red\">Upload von '" . $_FILES[$ufile]["name"]."' fehlgeschlagen.</p>\n";
       
    57 				return false;
       
    58 			}	
       
    59 		}
       
    60 		else
       
    61 		{
       
    62 			echo "<p class=\"red\">Upload von '" . $_FILES[$ufile]["name"]."' nicht m&ouml;glich!<br>$errupl1<br>$errupl2<br>$errupl3</p>\n";			
       
    63 			echo "<p><br><a href=\"sc_desc_update.php\">Upload bitte wiederholen</a><br></p>\n";
       
    64 			return false;
       
    65 		}	
       
    66 }
       
    67 
       
    68 function gen_filename($nfile, $ufile, $id)
       
    69 {
       
    70    /** generiert Filenamen aus Eingabefilenamen und Uploadfilenamen
       
    71     * Parameter
       
    72     *   $nfile  -   vorgegebener Name durch Nutzer
       
    73     *    $ufile  -   Name aus Upload-Feld Formular
       
    74     *    $id     -   ID
       
    75     */
       
    76             switch ($id) 
       
    77             {
       
    78                 case ($id < 10):
       
    79                     $len = 2;
       
    80                     break;
       
    81                 case ($id < 100):
       
    82                     $len = 3;
       
    83                     break;
       
    84                 case ($id < 1000):
       
    85                     $len = 4;
       
    86                     break;
       
    87             }
       
    88 //            echo "cid, len : $cid, $len<br><br>\n";          
       
    89     		// Dokument-Typ aus Dateibezeichnung bzw. Uploadfile, wenn nicht angegeben
       
    90     		$filea = explode(".",$nfile);
       
    91     		$anz    = count($filea);
       
    92           	if ($anz>1) // File-Typ im Eingabenamen angegeben
       
    93             {   
       
    94                 $typ = $filea[$anz-1]; 
       
    95                 for ($i=0; $i<$anz-1; $i++)
       
    96                 {
       
    97                     $fname .= "." . $filea[$i];
       
    98                 }
       
    99             }
       
   100             else // File-Typ aus Uploadfile
       
   101             {
       
   102                 $filep = explode(".",$_FILES[$ufile]["name"]);
       
   103                 $anz    = count($filep);
       
   104                 if ($anz>1) $typ = $filep[$anz-1]; else $typ = "pdf";
       
   105                 $fname = $nfile;
       
   106             }
       
   107             if (strlen($typ) != 3) $typ="pdf";
       
   108             if (substr($fname,0,1) == ".")
       
   109                 $fname = substr($fname,1,50-(4+$len)) . "." .$typ;
       
   110             else
       
   111                 $fname = substr($fname,0,50-(4+$len)) . "." .$typ;
       
   112             if (substr($fname,0,$len) == "$id" . "_") $fname = substr($fname,$len,50);
       
   113             
       
   114         return $fname;
       
   115 }
       
   116 
       
   117 function mod_file($path,$id,$fname_new,$mod)
       
   118 {
       
   119    /** Loeschen, Aendern des Namens von Vetragsdokumenten
       
   120     * Parameter 
       
   121     *    $path       -   Pfad zur Datei
       
   122     *    $id         -   ID des zu bearbeiteten Files, beginnt mit 'ID_'
       
   123     *    $fname_new  -   neuer Filename
       
   124     *    $mod        -   del = Loeschen
       
   125     *                    upd = Umbenennen
       
   126     */
       
   127     
       
   128     if ($fname_old = exec("ls ".$path." | grep '". $id . "_'"))
       
   129     {
       
   130         if (file_exists($path."/".$fname_old))
       
   131         {
       
   132             chmod($path."/".$fname_old,0644);
       
   133            if ($mod == "del")
       
   134            {
       
   135                 return unlink($path."/".$fname_old);
       
   136            }
       
   137            elseif ($mod == "upd" && $fname_new>"!")
       
   138            {
       
   139                 return rename($path."/".$fname_old, $path."/".$fname_new);           
       
   140            }
       
   141         }
       
   142     }    
       
   143 }
       
   144 // Test Aufruf
       
   145 /*
       
   146     if (mod_file("/var/www/fhiiqm/documents","20","","del"))
       
   147         echo "Erfolg!\n";
       
   148     else
       
   149         echo "Misserfolg\n";
       
   150 */
       
   151 
       
   152 ?>