Stand v. 31.08.2011
<?php
/**
* @author B.Schwarzer, Fritz-Haber-Institut
* @copyright 05/2011
*/
function upload($ufile, $fname, $id, $dir="documents")
{
/**
* prueft Uploadfile und verschiebt es in gewaehltes Verzeichnis
* Parameter
* $ufile = upload-File: name <input>-Feld
* $fname = gewaehlter filename
* $id = ID
* $dir = Verzeichnisname der Upload-Files
*/
$errupl1 = null;
$errupl2 = null;
$errupl3 = null;
// Test filesize, filetyp
if ($_FILES[$ufile]["size"] < 1) $errupl1 .= "$ufile: File ist leer! ";
if ($_FILES[$ufile]["size"] > 6000000) $errupl1 .= "$ufile: File > 6MByte! ";
// list($first,$rest) = explode(".",$_FILES[$ufile]["name"]);
$filep = explode(".",$_FILES[$ufile]["name"]);
$anz = count($filep);
$typ = $filep[$anz-1];
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! ";
//echo "filesize=" . $_FILES[$ufile]["size"] . "<br>\n";
if ($_FILES[$ufile]["error"] > 0) $errupl3 = "Fehler upload: ".$_FILES[$ufile]["error"];
if (!$errupl1 && ! $errupl2 && !$errupl3)
{
// File laden
$filetyp = $_FILES[$ufile]['type'];
$filesize = $_FILES[$ufile]['size'];
$filename = basename(addslashes($_FILES[$ufile]["name"]));
$tempname = $_FILES[$ufile]['tmp_name'];
if ($fname)
{
$ret = move_uploaded_file ( $tempname, $dir."/".$id."_".$fname);
}
else
$ret = move_uploaded_file ( $tempname, $dir."/".$id."_".$filename);
if ($ret)
{
// echo "Error upload: ". $_FILES['pfile']['error'] .", $tempname<br>\n";
if ($fname) $fname=$id."_".$fname; else $fname = $id."_".$filename;
echo "<p class=\"green\">Upload von '" . $_FILES[$ufile]["name"]."' erfolgreich.<br>
gespeicherter Dateiname: '". $fname ."'</p>\n";
return true;
}
else
{
echo "<p class=\"red\">Upload von '" . $_FILES[$ufile]["name"]."' fehlgeschlagen.</p>\n";
return false;
}
}
else
{
echo "<p class=\"red\">Upload von '" . $_FILES[$ufile]["name"]."' nicht möglich!<br>$errupl1<br>$errupl2<br>$errupl3</p>\n";
echo "<p><br><a href=\"sc_desc_update.php\">Upload bitte wiederholen</a><br></p>\n";
return false;
}
}
function gen_filename($nfile, $ufile, $id)
{
/** generiert Filenamen aus Eingabefilenamen und Uploadfilenamen
* Parameter
* $nfile - vorgegebener Name durch Nutzer
* $ufile - Name aus Upload-Feld Formular
* $id - ID
*/
switch ($id)
{
case ($id < 10):
$len = 2;
break;
case ($id < 100):
$len = 3;
break;
case ($id < 1000):
$len = 4;
break;
}
// echo "cid, len : $cid, $len<br><br>\n";
// Dokument-Typ aus Dateibezeichnung bzw. Uploadfile, wenn nicht angegeben
$filea = explode(".",$nfile);
$anz = count($filea);
if ($anz>1) // File-Typ im Eingabenamen angegeben
{
$typ = $filea[$anz-1];
for ($i=0; $i<$anz-1; $i++)
{
$fname .= "." . $filea[$i];
}
}
else // File-Typ aus Uploadfile
{
$filep = explode(".",$_FILES[$ufile]["name"]);
$anz = count($filep);
if ($anz>1) $typ = $filep[$anz-1]; else $typ = "pdf";
$fname = $nfile;
}
if (strlen($typ) != 3) $typ="pdf";
if (substr($fname,0,1) == ".")
$fname = substr($fname,1,50-(4+$len)) . "." .$typ;
else
$fname = substr($fname,0,50-(4+$len)) . "." .$typ;
if (substr($fname,0,$len) == "$id" . "_") $fname = substr($fname,$len,50);
return $fname;
}
function mod_file($path,$id,$fname_new,$mod)
{
/** Loeschen, Aendern des Namens von Vetragsdokumenten
* Parameter
* $path - Pfad zur Datei
* $id - ID des zu bearbeiteten Files, beginnt mit 'ID_'
* $fname_new - neuer Filename
* $mod - del = Loeschen
* upd = Umbenennen
*/
if ($fname_old = exec("ls ".$path." | grep '". $id . "_'"))
{
if (file_exists($path."/".$fname_old))
{
chmod($path."/".$fname_old,0644);
if ($mod == "del")
{
return unlink($path."/".$fname_old);
}
elseif ($mod == "upd" && $fname_new>"!")
{
return rename($path."/".$fname_old, $path."/".$fname_new);
}
}
}
}
// Test Aufruf
/*
if (mod_file("/var/www/fhiiqm/documents","20","","del"))
echo "Erfolg!\n";
else
echo "Misserfolg\n";
*/
?>