Dateiupload mittels PHP
Pascal
- php
0 TomIRL0 Andreas Korthaus0 molily0 Tom
Hallöchen zusammen
Bin nun schon seit längerer Zeit am Fehlersuchen , was bei meinem Script nicht funzt :-(
Ich hoffe dass ihr mir weiterhelfen könnt. Was ich machen möchte:
Simpler Dateiupload und in einem Verzeichniss abspeichern. Mein Code:
Formular:
<form enctype="multipart/form-data" method="post" action="unterricht/promotionsupdate.php">
<input name="upload" type="file" size="20" maxlength="100000" accept="text/*">
<input type="submit" value=" Absenden ">
Verarbeitung: unterricht/promotionsupdate.php
if (!move_uploaded_file ( $_FILES['upload']['name'], $name)){
echo "Upload der Datei "$upload_name" hat leider nicht geklappt!!!";
}
Zusätzliche Infos, welche ich zur Fehlereingrenzung ausprobiert habe:
echo $_FILES['upload']['name']; -> Der Name der ausgewählten Datei wird korrekt angezeigt
echo $_FILES['upload']['size']; -> Hier wird nur 0 ausgegeben, obrohl meine Testdatei 119 kb gross ist
Hat da jemand ne idee, was ich falsch mache? Ich sehe den Wald vor lauter Bäumen nicht mehr...
MFG
Pascal
Hallöchen zusammen
<form enctype="multipart/form-data" method="post" action="unterricht/promotionsupdate.php">
<input name="upload" type="file" size="20" maxlength="100000" accept="text/*">
<input type="submit" value=" Absenden ">Verarbeitung: unterricht/promotionsupdate.php
if (!move_uploaded_file ( $_FILES['upload']['name'], $name)){
echo "Upload der Datei "$upload_name" hat leider nicht geklappt!!!";
Hat da jemand ne idee, was ich falsch mache? Ich sehe den Wald vor lauter Bäumen nicht mehr...
Wo ist die variable $name definiert?
Kennst Du die Seite?
http://www.dclp-faq.de/q/q-formular-upload-php4.html
Viel Spaß beim probieren..
TomIRL
Hallöchen
Wo ist die variable $name definiert?
Weiter Oben. Hab nicht alles angegeben...
$name = "bla.pdf";
Kennst Du die Seite?
http://www.dclp-faq.de/q/q-formular-upload-php4.html
Ja, kenne ich. Dort hab ich gelernt, dass ich nicht länger
copy()
verwenden soll...
;-)
Grüssli
Pascal
Hallöchen
Weiter Oben. Hab nicht alles angegeben...
$name = "bla.pdf";
Hast Du fehlermeldungen?
Ist die Datei irgendwie angekommen?
Kennst Du die Seite?
http://www.dclp-faq.de/q/q-formular-upload-php4.htmlJa, kenne ich. Dort hab ich gelernt, dass ich nicht länger
copy()
verwenden soll...
Dann passe das Formular doch Schritt für Schritt an Deine Bedürfnisse an..
Wo liegt Dein Problem?
TomIRL
Hallo nochmal
Hast Du fehlermeldungen?
nein, ich kriege keine Fehlermeldung, obwohl Fehlermeldungen eingeschalten sind.
Dann passe das Formular doch Schritt für Schritt an Deine Bedürfnisse an..
Wo liegt Dein Problem?
Dieses Script hat noch nie funktioniert, ist keine Anpassung. Hab aber, was schon länger her ist sowas mit copy() realisiert. Blöderweise hab ich keinen Zugriff mehr auf dieses script. da liegt das Problem.
Gruss
Pascal
Hallo!
Dieses Script hat noch nie funktioniert, ist keine Anpassung. Hab aber, was schon länger her ist sowas mit copy() realisiert. Blöderweise hab ich keinen Zugriff mehr auf dieses script. da liegt das Problem.
Versuch mal eine Datei mit weniger als 100.000 Byte zu senden. Siehe https://forum.selfhtml.org/?t=87337&m=519020.
Grüße
Andreas
Hallo!
Dieses Script hat noch nie funktioniert, ist keine Anpassung. Hab aber, was schon länger her ist sowas mit copy() realisiert. Blöderweise hab ich keinen Zugriff mehr auf dieses script. da liegt das Problem.
Versuch mal eine Datei mit weniger als 100.000 Byte zu senden. Siehe https://forum.selfhtml.org/?t=87337&m=519020.
Mom.. Welche Rechte hat der Ordner wo Du was reinkopieren willsT?
TomIRL
Hallo TomIRL
Habs mit Hilfe von Andreas rausgekriegt. Hab zuwenig nullen im Feld size gehabt, da liegt das problem.
Hab trotzdem dank für deine Bemühungen...
:-)
Grüssli
Pascal
Hi Andreas
BINGO!
Vielen Dank...
Gruss
Pascal
Hi!
BINGO!
schön ;-)
Aber hast Du auch molilys Hinweis beachtet? https://forum.selfhtml.org/?t=87337&m=519041
Es würde mich allerdings sehr wundern wie es funktionieren kann, wenn Du 'name' statt 'tmp_name' verwendest.
Grüße
Andreas
Hi!
<input name="upload" type="file" size="20" maxlength="100000" accept="text/*">
echo $_FILES['upload']['size']; -> Hier wird nur 0 ausgegeben, obrohl meine Testdatei 119 kb gross ist
Vielleicht besteht hier ein Zusammenhang? Bedenke im übrigen - auch wenn das hier zu greifen scheint, dass diese Beschränkung leicht auszuhebeln ist, daher serverseitig die Größe prüfen!
Grüße
Andreas
Hallo Andreas
Vielleicht besteht hier ein Zusammenhang?
Hast du eine Idee welcher?
dass diese Beschränkung leicht auszuhebeln ist, daher serverseitig die Größe prüfen!
Genau, mit $_FILES['upload']['size'];
;-)
Gruss
Pascal
Hi!
Vielleicht besteht hier ein Zusammenhang?
Hast du eine Idee welcher?
Ja ;-)
Guck Dir mal unter http://de.selfhtml.org/html/formulare/datei_upload.htm an, was die verschiedenen Attribute bei
<input name="upload" type="file" size="20" maxlength="100000" accept="text/*">
so bewirken ;-)
Grüße
Andreas
Hallo,
Verarbeitung: unterricht/promotionsupdate.php
if (!move_uploaded_file ( $_FILES['upload']['name'], $name)){
echo "Upload der Datei "$upload_name" hat leider nicht geklappt!!!";
}Zusätzliche Infos, welche ich zur Fehlereingrenzung ausprobiert habe:
echo $_FILES['upload']['name']; -> Der Name der ausgewählten Datei wird korrekt angezeigt
Was in 'name' steht, ist für move_upload_file() unwichtig. move_upload_file verschiebt Dateien. Es erwartet ein Quellpfad und einen Zielpfad. Der Quellpfad ist die temporäre Datei, die PHP automatisch angelegt hat. Diese Datei trägt einen Namen, der mit dem vom Browser übermittelten Dateinamen 'name' nichts zu tun hat. Wie auf der genannten Seite http://www.dclp-faq.de/q/q-formular-upload-php4.html beschrieben ist, findest du den Pfad zur temporären Datei unter 'tmp_name'. Dies muss also der erste Parameter von move_uploaded_file() sein.
Mathias
Hello,
<form enctype="multipart/form-data" method="post" action="unterricht/promotionsupdate.php">
<input name="upload" type="file" size="20" maxlength="100000" accept="text/*">
<input type="submit" value=" Absenden ">Verarbeitung: unterricht/promotionsupdate.php
if (!move_uploaded_file ( $_FILES['upload']['name'], $name)){
echo "Upload der Datei "$upload_name" hat leider nicht geklappt!!!";
}
Hallo Pascal,
wenn Du Dir keine Sicherheitslücken einfangen willst, dann solltest Du folgendes beachten:
1. Den qualifizierten Zieldateinamen nicht direkt aus dem übertragenen Dateinamen bilden
sondern zusammensetzen aus $YourSaveDirectory."/".basename($_FILES['upload']['name'])
2. Bevor Du überhaupt anfängst, die hochgeladene Datei anzufassen, die Fehlernummer
$_FILES['upload']['error'] abfragen.
3. Dann auf jeden Fall den Typ prüfen. Dafür KEINESFALLS $_FILES['upload']['type']
benutzen, sondern eine eigene Funktion oder ab PHP 4.3.0 auch
http://de3.php.net/manual/en/function.mime-content-type.php
oder bei Linux-Systemen die Systemfunktion 'file'. Die kann man ggf. über
exec() aufrufen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom