Bilder Upload ...
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
antwort
benutzen
bild
byte
code
dank
datei
endung
feld
file
frage
funktion
helfen
http
image
pfad
problem
teil
type
url
-
Also ich hab hier so ein Upload-Scrip. Leider funktioniert das irgendwie nicht so ganz. Immer wenn man die Datei erfolgreich hochgeladen hat, ist irgendwie ein Fehler dort.
Hier mal das Input-Feld:
<form enctype="multipart/form-data" action="http://ew-community.lima-city.de/upload_data.php" method="post">
<input type="hidden" name="step" value="2" class="input">
<input name="file" type="file">
<input type="submit" value="Hochladen">
</form>
Und hier den PHP-Script:
<?php if ($step == 2) { $temp_name = $_FILES['file']['tmp_name']; $name = $_FILES['file']['name']; $type = $_FILES['file']['type']; $size = $_FILES['file']['size']; $pfad = "/upload/$name"; $er_size = "100"; if($type != "image/png" && $type != "image/pjpeg" && $type != "image/jpeg") { $err[] = "Es duerfen nur .png und .jpeg Dateien hochgeladen werden."; } if($size > $er_size * 1024) { $err[] = "Ihr Bild überschreitet die maximale Dateigrosse von $er_size KB."; } if(empty($err)) { copy("$temp_name", $pfad); echo "Ihr Bild wurde erfolgreich geuploadet."; } else { foreach($err as $error) echo $error."<br>"; } } ?>
Dann noch eine Frage, darf man sowas überhaupt bei Lima-City einsetzten? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ew-community schrieb:
Dann noch eine Frage, darf man sowas überhaupt bei Lima-City einsetzten?
Man darf ein solches Script auf lima benutzen, wenn du nicht gegen die FAQ handelst. Damit meine ich, dass du nur Bild-Dateien hochladen lässt. Aber das sieht bei dir schon gut aus.
Beim anderen Problem kann ich dir leider nicht helfen. -
Ok. Wo finde ich eigentlich die FAQ und ist die größe der Datein egal?
-
Ok. Wo finde ich eigentlich die FAQ und ist die größe der Datein egal?
Die FAQ findest du unter Hilfe: http://www.lima-city.de/2008/help
Am besten du liest dir alles durch und dann weisst du alles, was du über lima wissen musst.
Beitrag geändert: 30.12.2008 15:32:35 von jocko -
Statt copy() solltest du move_uploaded_file() benutzen. Damit kannst du einerseits die Beschränkung umgehen, die auf manchen Servern bezüglich der copy()-Funktion gemacht wird. Daran liegt es wohl auch, dass dein Script nicht wie gewünscht funktioniert. Außerdem stellst du damit sicher, dass nur Dateien verschoben werden, die von php hochgeladen wurden.
Versuch das ganze mal mit
move_uploaded_file("$temp_name", $pfad);
ps3web -
Ok hab ich eingesetzt. Könnte man aber wenn man das Bild gehostet hat irgendwie ein Feld machen wo der Code des bildes steht?
-
Füg mal nach der Zeile echo "Ihr Bild wurde erfolgreich geuploadet."; folgendes ein:
echo "Link: <a href=\"" . $_FILES["file"]["name"] . "\">" . $_FILES["file"]["name"] . "</a>";
Ich weiss nicht ob es funktioniert...
EDIT: oder vielleicht das: echo "Link: <a href=\"" . $_FILES['file']['name'] . "\">" . $_FILES['file']['name'] . "</a>";
Beitrag geändert: 30.12.2008 18:42:36 von jocko -
Kann man den Link anklicken?
hast du echo "Link: <a href=\"" . $_FILES['file']['name'] . "\">" . $_FILES['file']['name'] . "</a>"; benutzt? -
Der Link geht aber die Datei ist irgendwie nicht vorhanden -.- Muss ich vielleicht ein speziellen Ordner oder Datei erstellen?
-
Ich hab folgendes Script benutzt:
normale html Datei:
... <form action="upload.php" method="post" enctype="multipart/form-data" name="upload"> <input type="file" name="file"><input type="submit" name="submit" value="Upload"> </form>...
upload.php:
<?php // Variabeln festlegen $max_byte_size = 2097152; $allowed_types = "(jpg|jpeg|gif|png)"; // Formular wurde abgeschickt if($_POST["submit"] == "Upload") { // Wurde wirklich eine Datei hochgeladen? if(is_uploaded_file($_FILES["file"]["tmp_name"])) { // Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen) if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"])) { // Datei auch nicht zu groß if($_FILES["file"]["size"] <= $max_byte_size) { // Alles OK -> Datei kopieren if(copy($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])) { echo "Datei erfolgreich hochgeladen!<br>"; echo "Name: " . $_FILES["file"]["name"] . "<br>"; echo "Größe: " . $_FILES["file"]["size"] . " Byte<br>"; echo "MIME-Type: " . $_FILES["file"]["type"] . "<br>"; echo "Link: <a href=\"" . $_FILES["file"]["name"] . "\">" . $_FILES["file"]["name"] . "</a>"; } else { echo "Datei konnte nicht hochgeladen werden."; } } else { echo "Die Datei darf nur eine Größe von " . $max_byte_size . " Byte besitzen."; } } else { echo "Die Datei besitzt keine ungültige Endung."; } } else { echo "Keine Datei zum Hochladen angegeben."; } } else { echo "Bitte benutzen Sie das Upload Formular."; } ?>
Ich weiss nicht mehr von wo ich es habe.
Ansonsten findest du in den Tutorials auch Scripte, welche dir helfen könnten.
Beitrag geändert: 30.12.2008 20:28:24 von jocko -
Hallo,
ich habe gerade mal dein Skript durchgetestet und hier ist eine funktionierende Version. Du kannst beide Teile HTML und PHP in eine Datei laden.
Hier der HTML-Teil. Weggelassen habe ich hierbei den Eintrag bei "ACTION", daher ruft das Skript sich direkt wieder selber auf. Sinnvoll ist hierbei auch meistens eine relative Angabe zu machen und nicht die gesamte URL anzugeben.
<form enctype="multipart/form-data" action="" method="post"> <input type="hidden" name="step" value="2" class="input"> <input name="file" type="file"> <input type="submit" value="Hochladen"> </form>
Als nächstes der PHP-Teil. Hier habe ich ein paar mehr Änderungen gemacht.
Zunächst habe ich die Variable $step gegen die Übergabe in $_POST ausgetauscht, da ansonsten (ohne vorherige Definition das Skript nicht ausgeführt werden würde.
Dann habe ich die Variable $pfad geändert. Diese weißt nun, egal in welchem Ordner sich das Skript befindet, immer auf den Unterordner "upload" des Skriptspeicherortes hin. Beachte bitte, dass dieser Unterordner auch existieren muss.
Des Weiteren habe ich move_uploaded_file verwendet und gebe hier im ersten Teil den temporären Speicherort samt Namen der Datei an und danach den neuen Pfad und Namen.
In der Ausgabe für das erfolgreiche Hochladen der Datei, habe ich zudem einen Link zum Speicherort (Unterordner "upload" + Dateiname) angegeben, so dass man direkt das Überprüfen kann. Und weil es so schön ist, lasse ich mir das Bild auch direkt noch darunter ausgeben. ;)
<?php if ($_POST['step'] == 2) { $temp_name = $_FILES['file']['tmp_name']; $name = $_FILES['file']['name']; $type = $_FILES['file']['type']; $size = $_FILES['file']['size']; $pfad = dirname(__FILE__)."/upload/"; $er_size = "100"; if($type != "image/png" && $type != "image/pjpeg" && $type != "image/jpeg") { $err[] = "Es duerfen nur .png und .jpeg Dateien hochgeladen werden."; } if($size > $er_size * 1024) { $err[] = "Ihr Bild überschreitet die maximale Dateigrosse von ".$er_size." KB."; } if(empty($err)) { move_uploaded_file($temp_name,$pfad.$name); echo "Ihr Bild wurde erfolgreich geuploadet und ist nun <a href=\"upload/".$name."\" >hier</a> zu finden!<br><img src=\"upload/".$name.">"; } else { foreach($err as $error) { echo $error."<br>"; } } } ?>
Ich hoffe ich konnte dir bei deinem Problem weiterhelfen.
Gruß
Karlja
Edit: Jocko war mit seiner Antwort wohl etwas fixer, vielleicht hilft dir meine Antwort trotzdem, dein ursprüngliches Skript und die Funktionen zu verstehen.
Beitrag geändert: 30.12.2008 20:35:10 von karlja -
Danke euch beiden! :xyxthumbs: Beide Codes klappen.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage