Uploadscript

thekiller

Viceinator
Hallo,
ich habe mir folgendes Uploadscript runtergeladen. Es funktioniert und macht auch keine Probleme. Naja ich bin noch nicht sehr erfahren in PHP und möchte das Script gerne verstehen um es etwas abzuändern.
Hier erstmal das Script

Script Teil 1:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Hochladen</title>
</head>

<body>
<form action="/upload2.php" method="post" enctype="multipart/form-data">
<input type="file" name="datei" />
<input type="submit" />
</form>
</body>
</html>

Script Teil 2:
PHP:
<?php
$daten = explode('.', $_FILES[datei][name]);
$zahl = count($daten);
$md5 = md5(time());
$dateiname = $md5 . '.' . $daten[$zahl - 1];
move_uploaded_file($_FILES['datei']['tmp_name'], 'dateien/' . $dateiname);
chmod("dateien/" . $dateiname, 0604);
echo("<a href='dateien/" . $dateiname . "'>Link zu datei: Datei</a>");
echo("<br>");
echo("<textarea>http://www.design-projects.de/dateien/$dateiname</textarea>");
?>

Ich habe das Script soweit geändert, dass es auf meinem Server funktioniert...
Den ersten Teil des Scriptes verstehe ich komplett(denke ich)
Nur beim 2, seh ich noch nicht so ganz durch. Besonders diese Zeile macht mir zu schaffen:

PHP:
$daten = explode('.', $_FILES[datei][name]);

Was explode(); macht weiß ich schon, nur ich weiß nicht wie ich $_FILES[datei][name]
interpretieren soll. Ein normales Array scheint das ja nicht zu sein oder?

Okay ich denke das reicht soweit erstmal, wenn ich noch weitere Fragen habe frag ich natürlich^^

Ich hoffe Ihr könnt mir da weiterhelfen.

MfG Manuel
 
Zuletzt bearbeitet:
$_FILES (php.net)

Ein assoziatives Array mit Elementen, die in das aktuelle Skript mit der HTTP-POST-Methode hochgeladen wurden. Es ist automatisch global in allen Gültigkeitsbereichen.

"datei" ist der Key, weil es in einem Formular "datei" heißt.

Danach gibt es noch diese Inhalte:
$_FILES['userfile']['name']
Der ursprüngliche Dateiname auf der Client Maschine.​

$_FILES['userfile']['type']
Der Mime-Type der Datei, falls der Browser diese Information zur Verfügung gestellt hat. Ein Beispiel wäre "image/gif".​

$_FILES['userfile']['size']
Die Größe der hochgeladenen Datei in Bytes.​

$_FILES['userfile']['tmp_name']
Der temporäre Dateiname, unter dem die hochgeladene Datei auf dem Server gespeichert wurde.​

$_FILES['userfile']['error']
Der Fehlercode im Zusammenhang mit dem hochladen der Datei. ['error'] wurde in PHP 4.2.0 eingeführt.​


Diese Informationen sind auch hier zu finden:
Steuerung von Dateiuploads
 
Ich bin ma wieder^^
Ich ahbe nun folgendes Problem.

Hier erstma das Script:
PHP:
<?php
$downloadtitel = $_POST['downloadtitel'];
$dateiname = $_FILES[datei][name];
$uploaded_files_txt = 'uploadedfiles.txt';
$file = fopen("downloadtitel.txt","a");
fwrite($file, $downloadtitel."\n");
fclose($file);
move_uploaded_file($_FILES['datei']['tmp_name'], 'dateien/' . $dateiname);
chmod("dateien/" . $dateiname, 0604);
if(!file_exists($uploaded_files_txt))
{
	$create_uploadet_files = fopen("$uploaded_files_txt","w");
	fwrite($create_uploadet_files, "www.design-projects.de/dateien/".$dateiname);
	fclose($create_uploadet_files);
}
else
{
	$open_uploadet_files = fopen("$uploaded_files_txt","a");
	fwrite($create_uploadet_files, $downloadtitel);
	fclose($open_uploadet_files);
}
echo("<a href='dateien/" . $dateiname . "'>Link zu datei: Datei</a>");
?>

Das Script funktioniert soweit bis auf diese Zeile

PHP:
fwrite($create_uploadet_files, $downloadtitel);

Angeblich soll es kein gültiger String vorhanden sein, was ich einfach nicht verstehe, weil es im oberen Teil auch geht mit ein und derselben Variable...
Kann mir da jemand helfen? Ich sitz schon ne 3/4 stunde dran und such den Fehler...

MfG Manu
 
Zuletzt bearbeitet:
PHP:
$create_uploadet_files = fopen("$uploaded_files_txt","w");
    fwrite($create_uploadet_files, "www.design-projects.de/dateien/".$dateiname);

Wie du siehst bezieht sich hier fwrite auf dein Dateizeiger, sprich $crate_uploadet_files.

PHP:
$open_uploadet_files = fopen("$uploaded_files_txt","a");
    fwrite($create_uploadet_files, $downloadtitel);

Hier sollte er das auch tun, aber er heißt hier $open_uploadet_files, ergo solltest du da etwas ändern ;)
 
Zurück