olga28 Geschrieben 20. Mai 2009 Teilen Geschrieben 20. Mai 2009 Hallo, folgendes Problem: Ich versuche eine Datei, die ich ausgewählt habe ich die DB zu speichern. Leider bekomme ich immer wieder die PHP-Fehlermeldung: Warning: copy() [function.copy]: Filename cannot be empty in /mnt/web5/30/01/519 .. Folgender code bzw. code-teile: html: <form action="xyz.php" method="post"> <input type="hidden" name="user_file"> <input name="userfile" type="file" size="5"> </form> php: $filename = $_FILES['userfile']['tmp_name']; $filesize = $_FILES['userfile']['size']; $path = "/images"; $myFilename = $_REQUEST["userfile"]; if (!file_exists($path.$myFilename)) { if (!copy($filename,$path.$myFilename)) { echo "Konnte nicht speichern."; } ... usw. in der Variable $filename steht anscheinend nicht drin, woran kann dies liegen, oder stehe ich grad auf dem Schlauch und das Problem ist ziemlich offensichtlich?? Bitte helft mir! Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lit-web Geschrieben 21. Mai 2009 Teilen Geschrieben 21. Mai 2009 (bearbeitet) Hallo, als erstes rate ich dir ab $_REQUEST zu nutzen, nutze lieber $_POST das ist die sicherere Variante. Nunja auch deine Pfadangabe ist so nicht richtig. Deine Variable $myFilename ist natürlich auch Quatsch, da musst du mit $_FILES['file']['name']; arbeiten und nicht mit $_REQUEST. Nutze auch nicht copy sondern move_uploaded_file dazu. Hier mal ein verbesserter Code. $file_tmp = $_FILES['file']['tmp_name']; $file = $_FILES['file']['name']; $file_size = $_FILES['file']['size']; $path = "http://forum.fachinformatiker.de/images/"; //hier kommt der Upload move_uploaded_file($file_tmp,$path.$file); //so sieht es aus wenn nicht alle in extra Variablen steht move_uploaded_file($_FILES['file']['tmp_name'],"http://forum.fachinformatiker.de/images/".$_FILES['file']['name']); [/PHP] Wenn du das nächste mal PHP Code postest nutze bitte die PHP Tags aus dem Editor hier, das macht das lesen des Codes deutlich einfacher und das Syntaxhighlighting verrät oft schon Fehler im Code. Hoffe das hilft dir etwas weiter Gruß lit-web [EDIT] Vor allem was hat das mit Bild in DB speichern zu tun? Was man sowieso nicht machen sollte. Du hast ein Problem ein Bild richtig hochzuladen und in ein Verzeichnis zu kopieren bzw. upzuloaden. In die DB speicherst du nur den Namen des Bildes und im höchstfall noch den Pfad zum Verzeichnis. Bearbeitet 21. Mai 2009 von lit-web Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
olga28 Geschrieben 21. Mai 2009 Autor Teilen Geschrieben 21. Mai 2009 Hallo, erstmal herzlichen Dank für deine Mühe, werde dies jetzt testen und danach berichten. Man findet nicht überall so hilfreiche und freundliche Programmierer wie hier bei Fachinformatiker. Danke nochmals!:D Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
olga28 Geschrieben 21. Mai 2009 Autor Teilen Geschrieben 21. Mai 2009 Also jetzt bekomme ich die Fehlermeldung: .. failed to open stream: HTTP wrapper does not support writeable connections in .. wenn ich es richtig deute, dann sagt er mir, dass ich keine Verbindung zum schreiben aufbauen kann, aber ich versuche ja nichts zu schreiben, ich versuche doch lediglich einen upload in das verzeichnis zu machen. hier mein code <body bgcolor="yellow" text="#000000" link="#ffffff" vlink="#ffffff" alink="#ffffff"> <form enctype="multipart/form-data" action="<? $_SERVER['PHP_SELF'] ?>" method="post"> <input type="file" name="file"> <input type="submit" name="senden" value="Upload"> </form> <? $file_tmp = $_FILES['file']['tmp_name']; $file = $_FILES['file']['name']; $file_size = $_FILES['file']['size']; $path = "http://forum.fachinformatiker.de/images/"; //hier kommt der Upload move_uploaded_file($file_tmp,$path.$file); //so sieht es aus wenn nicht alle in extra Variablen steht //move_uploaded_file($_FILES['file']['tmp_name'],"http: //forum.fachinformatiker.de/images/".$_FILES['file']['name']); ?> [/PHP] was mache ich falsch? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lit-web Geschrieben 22. Mai 2009 Teilen Geschrieben 22. Mai 2009 Hallo, also hast du mal die chmod des Verzeichnisses gecheckt? Stelle sie notfalls auf 777. Ein Tipp verwende niemals ungesichertes $_SERVER['PHP_SELF'] das ist XSS anfällig. Wenn du das Formular sowieso an sich selber schicken willst dann lass das action Atribut doch einfach leer oder aber verwende $_SERVER['SCRIPT_NAME']. Hast du mal deine Fehlermeldung in Google eingegeben und gesucht? Weil failed to open stream gibt eigentlich ein Pfadproblem wieder, das heist dein Pfad zum Zielverzeichnis stimmt nicht. Überprüfe das mal bitte. Gruß lit-web Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 25. Mai 2009 Teilen Geschrieben 25. Mai 2009 du solltest den pfad beim upload anpassen und nicht stur "http://..." reinschreiben. das kann nicht funktionieren, siehe fehlermeldung "http wrapper does not support writable.." heißt, move_uploaded_file kann dateien nicht per http hochladen, und genau das willst du da machen. $path sollte ein verzeichnis sein in das der webserver schreiben darf, relative oder absolute pfadangabe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
olga28 Geschrieben 26. Mai 2009 Autor Teilen Geschrieben 26. Mai 2009 Hallo, danke für den Tipp, also mit der relativen Pfadangabe klappt das Aufspielen auf den Webserver. Danke Nächste Frage: Wenn ich z.B. in einem Formular die benötigten Daten ausgefüllt habe und schicke das Formular weg, möchte ich dass im Anschluß daran eine z.B. Danke-Seite(HTML-Seite) angezeigt wird, wie soll ich das anstellen? Danke schon mal im Voraus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lit-web Geschrieben 27. Mai 2009 Teilen Geschrieben 27. Mai 2009 Da gibt es zwei Alternativen. Da kommt es drauf an wie du dein Formular verarbeitest. Die eine du legst dir eine seperate danke.php an und leitest via header('Location: dein_absoluter_pfad/danke.php'); bei Fehlerfreien Ablauf weiter, oder aber du machst es mit einem meta refresh. Dann kannst du das auf der selben Seite machen. Beispiel header('Location:'); dafür benötigst du eine seperate danke.php if(isset($_POST['sende_button'])) { $error = array(); //dein prüfungsroutinen if(!$error) { header('Location: http://www.domain.de/danke.php'); } } [/PHP] Beispiel mit einem meta refresh: hier bleibst auf der selben Seite und brauchst keine seperate Datei. [PHP] if(isset($_POST['sende_button'])) { $error = array(); //dein prüfungsroutinen if(!$error) { echo 'Danke für Ihre Email!'; echo '<meta http-equiv="refresh" content="5; url=page_cat_post.php">'; } } Mehr ist es vom ganzen her nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.