Hi,
ich habe mir gerade ein kleines Script für einen Dateiupload programmiert.
Für mehr Übersicht hab ich es auch noch mal bei paste gepostet:
http://paste.calitrix.de/94
Der eigentliche Upload wird in den Zeilen 81 - 159 durchgeführt. Erst werden alle Felder geprüft usw. und dann mit move_uploaded_file() die Datei in den Ordner verschoben.
Die beiden Parameter für move_uploaded_file lauten wie folgt:
($userfile, $upfile);
$userfile wird in Zeile 96 definiert. $upfile in zeile 102. $verzeichnis wird in der Datei download_preferences.php definiert.
Wenn ich nun $userfile und $upfile ausgebe, kommt folgendes dabei raus:
C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\phpB.tmp
/downloads/versetzt_schriftzug.jpg
Ich mache das ganze lokal. Die Datei downloads.php liegt im Ordner C:\xampp\xampp\htdocs\statement\redaktion, die Downloads sollen in den Ordner C:\xampp\xampp\htdocs\statement\redaktion\downloads. Dort kommen jedoch keine Dateien an!
ich hoffe dass mir jemand bei meinem bescheidenen Problemchen helfen kann ;-)
ich habe mir gerade ein kleines Script für einen Dateiupload programmiert.
PHP:
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html><!-- InstanceBegin template="/Templates/Redaktions-Seite.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<!-- InstanceBeginEditable name="doctitle" -->
<title>Downloads @ statement-online.com // interner Bereich</title>
<!-- InstanceEndEditable -->
<link rel="stylesheet" type="text/css" href="st_formate.css">
<!--[if gte IE 5]>
<link href="ie5kompatibel.css" rel="stylesheet" type="text/css" media="screen" />
<![endif]-->
<script type='text/javascript' src="mm_menu.js"></script>
<script type='text/javascript' >
<!--
<?php
require('popup_menu.php');
?>
//-->
</script>
<!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
</head>
<body>
<script type='text/javascript'>
<!--
mmLoadMenus();
//-->
</script>
<div class="hauptleiste">
<?php
if ($HTTP_SESSION_VARS['valid_user'])
{
// Javascript-Menü
echo "<div class='popupmenu' onMouseOut=\"MM_startTimeout();\" onMouseOver=\"MM_showMenu(window.mm_menu_1128215905_4,7,26,null,'menu');\">Artikel</div>";
echo "<div class='popupmenu' onMouseOut=\"MM_startTimeout();\" onMouseOver=\"MM_showMenu(window.mm_menu_1128220109_3,83,26,null,'menu');\">Ideen</div>";
echo "<div class='popupmenu' onMouseOut=\"MM_startTimeout();\" onMouseOver=\"MM_showMenu(window.mm_menu_1128220113_2,152,26,null,'menu');\">Zitate</div>";
echo "<div class='popupmenu' onMouseOut=\"MM_startTimeout();\" onMouseOver=\"MM_showMenu(window.mm_menu_1128220120_1,222,26,null,'menu');\">Termine</div>";
echo "<div class='popupmenu' onMouseOut=\"MM_startTimeout();\" onMouseOver=\"MM_showMenu(window.mm_menu_1128220125_0,309,26,null,'menu');\">Profile</div>";
}
?>
<!-- InstanceBeginEditable name="Inhalt" -->
<?php
ERROR_REPORTING(E_ALL);
require("funktionen.php");
require("download_preferences.php");
echo "<div id='inhalt'>";
if (isset($_SESSION['valid_user']))
{
require('daten/mysql_user_login.php');
echo '<h1>Downloads</h1>';
/*
if ( isset($HTTP_POST_FILES['userfile']['tmp_name']) && !$HTTP_POST_FILES['userfile']['tmp_name'] )
{
echo "<span class='fehler'>Du musst eine Datei auswählen!</span>";
}
*/
//FORMULAR FÜR NEUE DATEIEN
//##################################################################
echo "Hier kannst du verschiedene Dateien deiner Wahl hochladen, die in der statement benötigt werden. Bitte lade hier aber keine Bilder hoch - die Möglichkeit dazu findest du unter dem jeweiligen <a href=\"artikel_anschauen.php\">Artikel</a>.<br /><br /><br /><br/>";
echo "<form name=\"hinzufuegen\" enctype=\"multipart/form-data\" action=\"$_SERVER[PHP_SELF]\" method=\"post\">";
echo '<table class="upload">' ."\n";
echo '<tr><td><h3>Datei hochladen</h3></td></tr>';
echo '<tr><td rowspan="4"><img src="bilder/upload_big.gif"></td><td class="spalte1">Name</td><td class="spalte2"><input name="name" type="text" size="103"></td></tr>' ."\n";
echo '<tr><td>Beschreibung</td><td><textarea name="beschreibung"></textarea></td>';
echo '<tr><td><input type="hidden" name="MAX_FILE_SIZE" value="5000000">Datei (*)</td><td><input name="userfile" type="file"></td></tr>' ."\n";
echo '<tr><td></td><td><input type="submit" name="wegdamit" value="Datei hochladen"></td></tr></table></form>' ."\n";
echo "<span class='fehler'>";
//##################################################################
//Nachdem das Formular ABGESCHICKT wurde
//##################################################################
if ($_POST['wegdamit'])
{
$fehler = "<span class='fehler'>";
if ( isset($_POST['userfile']['tmp_name']) && !$_POST['userfile']['tmp_name'] ) $fehler.= "Du musst eine Datei auswählen!<br />";
//if(!$HTTP_POST_VARS['name'] || !$$HTTP_POST_VARS['beschreibung']) $fehler.= "Bitte fülle alle Felder aus.<br />";
if ("b" == "b")
{
//$name1 ist eine kurzer Name, $beschreibung1 ein ausführlicher Text.
$name1=stripslashes($_POST['name']);
$beschreibung1=stripslashes($_POST['beschreibung']);
//Alle Variablen definieren, die in die DB geschrieben werden
$userfile = $_FILES['userfile']['tmp_name'];
$userfile_name = $_FILES['userfile']['name'];
$userfile_size = $_FILES['userfile']['size'];
$userfile_type = $_FILES['userfile']['type'];
$userfile_error = $_FILES['userfile']['error'];
$urheber = $_SESSION['valid_user'];
$upfile = "$verzeichnis/$userfile_name";
//Dateityp herausfinden
if ($userfile_type == "application/msword") $dateiname = "Word-Dokument";
if ($userfile_type == "text/plain") $dateiname = "reine Textdatei";
if ($userfile_type == "application/zip") $dateiname = "ZIP-Datei";
if ($userfile_type == "image/tiff") $dateiname = "TIF-Datei (Bild)";
if ($userfile_type == "text/css") $dateiname = "CSS-Stylesheet (für Internetseiten)";
if ($userfile_type == "text/html") $dateiname = "HTML-Datei (für Internetseiten)";
if ($userfile_type == "text/rtf") $dateiname = "Rich-Text Format (u. A. für Word)";
if ($userfile_type == "application/x-httpd-php") $dateiname = "PHP-Datei (für Internetseiten)";
if ($userfile_type == "application/msexcel") $dateiname = "Excel-Datei";
if ($userfile_type == "application/postscript") $dateiname = "Postscript-Datei";
if ($userfile_type == "application/pdf") $dateiname = "Adobe PDF-Datei";
//dem Ordner Rechte zuweisen
@mkdir($verzeichnis,0710);
/*
if (is_uploaded_file($userfile))
{
*/
print($upfile);
move_uploaded_file($userfile, $upfile);
// }
//Rechte für die Datei setzen
//chmod($upfile,0740);
}
if($fehler != "<span class='fehler'>")
{
$fehler.= "</span>";
//print($fehler);
}
else
{
//Name, Beschreibung und Dateityp an die Datenbank senden
$anfrage="INSERT INTO st_downloads (name,beschreibung,datum,urheber,dateityp,speicherort)";
$anfrage .= 'VALUES ("' .$name1 .'","' .$beschreibung1 .'",NOW(),"' .$HTTP_SESSION_VARS['valid_user'] .'","' .$dateiname .'","' .$userfile_name. '");';
require("daten/mysql_db.php");
require("daten/mysql_user_login.php");
mysql_query($anfrage);
mysql_close($verbunden);
//Fertigmeldung.
echo 'Datei hochgeladen.';
echo "</span>";
}
//POST-Variablen löschen, um doppelte Einträge zu vermeiden
unset($_POST['name']);
unset($_POST['beschreibung']);
}
//Hier AUSGABE der schon hochgeladenen Dateien
//##################################################################################################
print("<table width=\"100%\"><tr><td bgcolor=\"#ffcc00\">Name</td><td bgcolor=\"#ddddd\">Datum</td><td>Dateiformat</td><td>Autor</td><td>Download</td>");
if ($rechte == 0)
{
print("<td width=\"25px\"></td>");
}
print("</tr>");
$auslesen = "SELECT id,name,beschreibung,datum,urheber,dateityp,speicherort FROM st_downloads";
require("daten/mysql_db.php");
require("daten/mysql_user_login.php");
$schleife = mysql_query($auslesen);
while($record = mysql_fetch_array($schleife))
{
$jetzt = $record[3];
$zeit = date('d.m.y',$jetzt)." um ".date('H:i',$jetzt)."";
$downloadlink = "$verzeichnis/$record[6]";
print("<tr><td>$record[1]<br/><span style=\"font-size: 11px;\">$record[2]</span></td><td>$zeit</td><td>$record[5]</td><td>$record[4]</td><td><a href=\"$downloadlink\" alt=\"Download\" title=\"Download\"><img src=\"bilder/download_icon.gif\" border=\"0\" /></a></td>");
//NUR FÜR ADMINS UND AUTOREN DER DATEIEN!
if($rechte = 0 || $_SESSION['valid_user'] = $record[4])
{
// LÖSCHEN
print("<td><a href=\"$_SERVER[PHP_SELF]?action=delete&was=$record[0]\" title=\"Löschen\" alt=\"Löschen\"><img src=\"bilder/delete.gif\" alt=\"Löschen\" border=\"0\" /></a></td>");
// EDITIEREN
print("<td><a href=\"$_SERVER[PHP_SELF]?action=edit&was=$record[0]\" title=\"Editieren\" alt=\"editieren\">Editieren</a></td>");
}
print("</tr>");
}
mysql_close($verbunden);
print("</table>");
//Hier LÖSCHEN von Dateien
//###############################################################################################
//Dieser Block gilt nur für Administratoren. Niemand sonst darf dateien löschen (dazu $rechte == 0)
if($rechte == 0)
{
//Prüfen: Wurde diese Datei mit der action "delete" aufgerufen und wurde auch eine id der zu löschenden Datei vergeben?
if($_GET['action'] == "delete" && isset($_GET['was']))
{
$anfrage = "SELECT speicherort FROM st_downloads WHERE id = $_GET[was]";
$erg = mysql_anfrage($anfrage);
$row = mysql_fetch_row($erg);
//Mit unlink() die eigentliche Datei löschen. $downloadlink wurde weiter oben konstruiert --> ist ja der gleiche pfad
// unlink("$uverz);
//zusätzlich zur datei auch die sachen aus der db löschen
$anfrage2 = "DELETE FROM st_downloads WHERE id = $_GET[was]";
$erg = mysql_anfrage($anfrage2);
//damit bei einem eventuellen reload keine probleme auftauchen, get-variablen löschen
unset($_GET['action']);
unset($_GET['was']);
print('<span class="successful">Die Datei wurde erfolgreich gelöscht!</span>');
}
//Hier EDITIEREN von Dateien
//###############################################################################################
//Nur für Administratoren und Autoren des jeweiligen Artikels, damit gefälschte GET-Variablen nichts ausrichten können
if($_GET['action'] == "edit" && isset($_GET['was']))
{
$anfrage = "SELECT id,name,beschreibung FROM st_downloads WHERE id = $_GET[was]";
$erg = mysql_anfrage($anfrage);
$row = mysql_fetch_row($erg);
print("<h2>Download Nr. $row[0] überarbeiten</h2><table>");
print("<form action=\"$_SERVER[PHP_SELF]\" method=\"get\"><br /><tr><td>Name</td><td><input type=\"text\" name=\"new_name\" value=\"$row[1]\" /></td></tr><tr><td>Beschreibung</td><td><textarea name=\"new_description\">$row[2]</textarea></td></tr></table>");
print("<input type=\"submit\" value=\"Informationen &aouml;ndern\"></form>");
unset($_GET['action']);
unset($_GET['was']);
}
if(isset($_GET['new_name']) && isset($_GET['new_description']))
{
$anfrage_editnow = "INSERT into id,name,";
}
}
}
?>
<!-- InstanceEndEditable -->
</div>
</body>
<!-- InstanceEnd --></html>
Für mehr Übersicht hab ich es auch noch mal bei paste gepostet:
http://paste.calitrix.de/94
Der eigentliche Upload wird in den Zeilen 81 - 159 durchgeführt. Erst werden alle Felder geprüft usw. und dann mit move_uploaded_file() die Datei in den Ordner verschoben.
Die beiden Parameter für move_uploaded_file lauten wie folgt:
($userfile, $upfile);
$userfile wird in Zeile 96 definiert. $upfile in zeile 102. $verzeichnis wird in der Datei download_preferences.php definiert.
Wenn ich nun $userfile und $upfile ausgebe, kommt folgendes dabei raus:
C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\phpB.tmp
/downloads/versetzt_schriftzug.jpg
Ich mache das ganze lokal. Die Datei downloads.php liegt im Ordner C:\xampp\xampp\htdocs\statement\redaktion, die Downloads sollen in den Ordner C:\xampp\xampp\htdocs\statement\redaktion\downloads. Dort kommen jedoch keine Dateien an!
ich hoffe dass mir jemand bei meinem bescheidenen Problemchen helfen kann ;-)