Dateien via HTML und PHP hochladen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ahnung
aufruf
code
dank
darstellung
datei
fehler
fehlermeldung
frage
grad
message
parameter
problem
status
stelle
stellen
unerwarteter string
versuchen
zeile
-
Hallo,
ich hab da eine Frage: ich versuche seit einiger Zeit eine Website zu schreiben, die Dateien hochlädt (ich habe lediglich vor die Website Privat online zu stellen) . Ich habe schon einen Code, der in drei Dateien zu zählen ist: default.html , upload.php , status.html :
ich hab nun ein Problem, immer wenn ich es online stelle und es aufrufe kommt da ein Fehler:
und ich hab keine Ahnung was da falsch ist...
PHP Error Message Warning: preg_match() expects at least 2 parameters, 1 given in /home/a5839748/public_html/upload/upload.php on line 10
wobei status.html nur zur äußerlichen darstellung dient.
default.html:
<html> <form method="post" action="upload.php" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> <input name="Datei" type="file" size="60" maxlength="1000000" accept="text/txt*, text/php, image/jpeg, image/gif, image/png, video/*, audio/x-wav, audio/x-mpeg, application/octet-stream, application/pdf, application/zip"> <input type="submit" name="Submit" value="Senden"> </html>
upload.php
<?php if (isset($_FILES["datei"])) { echo "Variablen überprüfen fertig..."; } else { echo "Es wurde keine Datei gefunden, deshalb wurde auch keine Datei hochgeladen!"; } if (preg_match($_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 1000000) {move_uploaded_file($_FILES["datei"]["tmp_name"],"public_html/".$_FILES["datei"]["name"]); header("Location: status.html"); } else { echo "Entweder ist keine Datei ausgewählt oder die Datei ist zu groß!"; } ?>
status.php
<html> <head> <title>Dateiupload – Erfolgreich</title> </head> <body> <p><font face="Arial, Helvetica, sans-serif" size="6">Upload: Erfolgreich</font></p> <p><font face="Arial, Helvetica, sans-serif"><a href="default.php">[Zum Dateiupload]</a></font></p> </body> </html>
Danke im Vorraus...
Beitrag zuletzt geändert: 27.5.2013 20:24:28 von vosliker -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ahoy!
Also die Fehlermeldung ist eh schon recht aussagekräftig :)
Sie besagt, dass in der Datei upload.php in der Zeile 12 ein unerwarteter String vorkommt... allerdings sehe ich da grade keinen Fehler... aber vielleicht hab ich dir geholfen das Problem selbst zu finden?!
EDIT:
timebandit hat vollkommen Recht, wie konnte ich das übersehen? Sorry^^
MfG
Beitrag zuletzt geändert: 27.5.2013 18:59:37 von destodes -
if (preg_match($_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 1000000) move_uploaded_file($_FILES["datei"]["tmp_name"],"public_html/".$_FILES["datei"]["name"]); header("Location: status.html");
Dort fehlen schließende bzw. öffnende Klammern.
Korrigiert sieht das so aus:
Edit
if (preg_match($_FILES["datei"]["size"] )> 0 && $_FILES["datei"]["size"] < 1000000)
{move_uploaded_file($_FILES["datei"]["tmp_name"],"public_html/".$_FILES["datei"]["name"]);
header("Location: status.html");}
Beitrag zuletzt geändert: 27.5.2013 19:38:58 von timebandit -
ich probier es gleich mal aus...
gerade ist der Server abgestürtzt, deswegen wird es wohl eine Weile dauern
Edit:
ich hab es jetzt ausprobiert, nur jetzt ist da ein anderer Fehler:
PHP Error Message Warning: preg_match() expects at least 2 parameters, 1 given in /home/a5839748/public_html/upload/upload.php on line 10
Beitrag zuletzt geändert: 27.5.2013 19:18:47 von vosliker -
timebandit schrieb:
Auch nicht. Eher so:
Korrigiert sieht das so aus:
if (preg_match($_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 1000000))if(preg_match('/\\.(txt|jpg|png)$', $_FILES["datei"]["name"]) && $_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 1000000)
Woher soll
wissen, wonach du suchst? Dazu musst du der Funktion einen entsprechenden regulären Ausdruck geben, und das hast du nicht gemacht. Außerdem willst du vermutlich mitpreg_match()
auf Dateinamen bzw. Dateierweiterungen prüfen…preg_match()
In meinem Beispiel werden alle Dateien zugelassen, deren Dateiname auf txt, jpg oder png endet.
Weitere Details: siehe Dokumentation. -
Ok hab ich gemacht, danke, jetzt kommt aber leider eine andere Fehlermeldung:
"Es wurde keine Datei gefunden, deshalb wurde auch keine Datei hochgeladen!", die ich selbst erstellt habe, wegen:
if (isset($_FILES["datei"])) {echo "Variablen überprüfen fertig..."; } else {echo "Es wurde keine Datei gefunden, deshalb wurde auch keine Datei hochgeladen!"; }
Was ist nun wieder los?
-
Das könnte an der unterschiedlichen Groß-Kleinschreibung liegen. Im Formular nennst du das Feld
, mit PHP willst du aber ein Feld namensDatei
bearbeiten. Nenn das Feld im Formular ebenfallsdatei
(klein geschrieben) und es wird vermulich funktionieren…datei
-
Hey danke jetzt steht bei mir erfolgreich...
nur ich sehe keinen upload im Archiv
kannst du mir da weiterhelfen? -
Der Server wird dein Verzeichnis so nicht finden. Verwende besser das Wurzelverzeichnis.
Wenn deine Datei im Ordner vosliker.lima-city.de/public_html liegt, dann genügt
$uploaddir = "{$_SERVER["DOCUMENT_ROOT"]}/public_html/";
ansonsten $uploaddir = "{$_SERVER["DOCUMENT_ROOT"]}/dein/Pfad/zum/public_html/";
Das könnte dann etwa so aussehen:
if(preg_match('/\\.(txt|jpg|png)$', $_FILES["datei"]["name"]) && $_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 1000000) { $uploaddir = "{$_SERVER["DOCUMENT_ROOT"]}/dein/Pfad/zum/public_html/"; // Pfad anpassen /* Hier könnte noch eine Überprüfung vorgenommen werden, ob das Verzeichnis existiert if(is_dir($uploaddir))*/ if(move_uploaded_file($_FILES["datei"]["tmp_name"],$uploaddir.$_FILES["datei"]["name"])) { header("Location: status.html"); } else { echo "<h1>Der Upload ist gescheitert</h1>"; } } else { echo "Entweder ist keine Datei ausgewählt oder die Datei ist zu groß!"; }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage