PHP: Bildupload mit sofortiger Anzeige

  • #1
J

Jonowa

Aktives Mitglied
Themenersteller
Dabei seit
14.02.2002
Beiträge
36
Reaktionspunkte
0
Hallööö,

ich möchte auf meiner Club-Page einen Bereich einrichten, in dem jedes Mitglied eigene Bilder für eine Galerie hochladen kann. Das Ganze soll folgendermaßen vonstatten gehen:
Das Mitglied loggt sich ein und sieht die bisher hochgeladenen Bilder. Ebenfalls auf dieser Seite befindet sich ein Formular, um neue Fotos hochzuladen.
Bis hierhin funzt bereits alles einwandfrei. Aaaber jetzt kommt mein Problem:
Nach dem Upload wird immer noch das alte Bild (sehr wahrscheinlich aus dem Cache) angezeigt. Wenn ich nun die Seite aktualisiere, bekomme ich eine Warnmeldung vom Browser.
Ich habe hier mal eine stark abgespeckte Version dieses Upload-Formulares:

Code:
<html>
<head>
<title>Datei-Upload</title>
</head>
<body>
<h2>Datei-Upload</h2>
<center>
  <img src=bild.jpg alt= boder=0>
</center>
<hr>
<form method=post action=<?php echo $PHP_SELF; ?> enctype=multipart/form-data>
  <input type=file name=dateiname>
  <input type=submit value=Bild hochladen>
</form>
<?php
  $dateiname = $_FILES['dateiname']['name'];
  $tmp_name = $_FILES['dateiname']['tmp_name'];
  if (!isset ($dateiname)) 
    exit;
  if (!is_uploaded_file ($tmp_name)) {
    echo->Fehler bei der Übertragung!<br>';
    exit;
  }
  $uploadname =->./bild.jpg';
  move_uploaded_file ($tmp_name, $uploadname);
?>
</body>
</html>

Ihr könnt das Script auch gerne auf meiner Page testen:
http://www.peugeot-team-nrw.de/upload.php
Wie bekomme ich es hin, dass mir das Script nach dem Klick auf Bild hochladen das neue Bild anzeigt?

Vielen Dank im Voraus
Jörg
 
  • #2
Da das Bild ja schon VOR der bearbeitung des Formulars ausgegeben wird, kann das so auch nicht klappen.

Probiers mal so:

Code:
<html>
<?php
if($_POST['upload']) {
 $dateiname = $_FILES['dateiname']['name'];
 $tmp_name = $_FILES['dateiname']['tmp_name'];
 if (!isset ($dateiname)) 
  exit;
 if (!is_uploaded_file ($tmp_name)) {
  echo->Fehler bei der Übertragung!<br>';
  exit;
 }
 $uploadname =->./bild.jpg';
 move_uploaded_file ($tmp_name, $uploadname);
}
?>
<head>
<title>Datei-Upload</title>
</head>
<body>
<h2>Datei-Upload</h2>
<center>
 <img src=bild.jpg alt= boder=0>
</center>
<hr>
<form method=post action=<?php echo $PHP_SELF; ?> enctype=multipart/form-data>
 <input type=file name=dateiname>
 <input type=submit name=upload value=Bild hochladen>
</form>
</body>
</html>


gruss conny
 
  • #3
Leider bringt das auch nichts.
In meiner eigentlichen Seite steht das Script sogar ganz oben im Dokument.
Ich habe es auch schon über das META-Tag
<meta http-equiv=cache-control content=no-cache>
versucht, aber auch das haut nicht hin.

Ich muss also so oder so von Hand einen Refresh der Seite machen :-\
Und dann kommt halt, wie gesagt, diese nervige Meldung.
 
  • #4
OK, nächster Versuch:

Code:
<html>
<?php
if($_POST['upload']) {
 $dateiname = $_FILES['dateiname']['name'];
 $tmp_name = $_FILES['dateiname']['tmp_name'];
 if (!isset ($dateiname))
  exit;
 if (!is_uploaded_file ($tmp_name)) {
  echo->Fehler bei der Übertragung!<br>';
  exit;
 }
 $uploadname =->./bild.jpg';
 move_uploaded_file ($tmp_name, $uploadname);
 echo-><script language=javascript type=text/javascript>self.refresh();</script>';
}
?>
<head>
<title>Datei-Upload</title>
</head>
<body>
<h2>Datei-Upload</h2>
<center>
 <img src=bild.jpg alt= boder=0>
</center>
<hr>
<form method=post action=<?php echo $PHP_SELF; ?> enctype=multipart/form-data>
 <input type=file name=dateiname>
 <input type=submit name=upload value=Bild hochladen>
</form>
</body>
</html>

So funktionierts jedenfalls bei mir ;)

gruss conny
 
  • #5
Hallo Conny,

was für einen Browser nutzt du? Bei mir (mit dem IE 6 auf WinXP SP2) haut es beim Besten Willen nicht hin :mad:
Der IE kennt den Befehl self.refresh() nicht. In meinem JavaScript-Referenzbuch finde ich diesen Befehl auch nicht. Das refresh-Objekt ist eigentlich nur für Plug-Ins gedacht.

Ich glaube, ich werde mir wohl etwas anderes einfallen lassen. (Evtl. das neue Bild in einem Popup anzeigen lassen. Dann wird schließlich ein ganz neues Dokument erzeugt...) :-\
Ich denke, es liegt daran, dass ich die geuppte Datei unter einem vorhandenen Dateinamen speichere. Und irgendwie rallt der Browser (oder wer/was auch immer) nicht, dass sich diese Datei nun geändert hat. ???
 
  • #6
Hallo Conny,

ich habe es nun endlich geschafft!!
Es ist zwar nicht sooo elegant, aber das kann ich verantworten  ::)
Das neue Bild wird in ein neues Fenster geladen, und seltsamerweise wird es nun auch auf der eigentlichen Seite aktualisiert. Im neuen Fenster erscheint noch ein Hinweistext, damit der Benutzer weiß, was Sache ist. Die Bildgröße habe ich auf 1x1 Pixel gesetzt, damit es mehr oder weniger unsichtbar bleibt...
Hier der Quelltext:
Code:
<html>
<?php
if($_POST['upload']) {
  $dateiname = $_FILES['dateiname']['name'];
  $tmp_name = $_FILES['dateiname']['tmp_name'];
  if (!isset ($dateiname)) 
    exit;
  if (!is_uploaded_file ($tmp_name)) {
    echo->Fehler bei der Übertragung!<br>';
    exit;
  }
  $uploadname =->./bild.jpg';
  move_uploaded_file ($tmp_name, $uploadname);
  echo-><script language=JavaScript type=text/javascript>';
  echo->var w = window.open(, Upload);';
  echo->var d = w.document;->;
  echo->d.write (Die Bilder wurden aktualisiert.<br>Bitte dieses Fenster schließen.<br>);';
  echo->d.write (<img src='.$uploadname.' width=1 height=1 border=0>);->;
  echo-></script>->;
}
?>
<head>
<title>Datei-Upload</title>
</head>
<body>
<h2>Datei-Upload</h2>
<center>
  <img src=bild.jpg alt= boder=0>
</center>
<hr>
<form method=post action=<?php echo $PHP_SELF; ?> enctype=multipart/form-data>
  <input type=file name=dateiname>
  <input type=submit name=upload value=Bild hochladen>
</form>
</body>
</html>

Trotzdem vielen Dank für deine Bemühngen.

Gruß, Jörg

PS: Dieses Script funktioniert übrigens nach ein paar Anpassungen auch mit mehreren Bildern, die gleichzeitig hochgeladen werden können.
 
  • #7
Hallo zusammen
Habe auch den Wunsch soetwas anzubieten. Kann mir vielleicht jemand mitteilen wie die Verzeichnisse genannt werden müssen, die ich auf meiner Homepage erstellen muss und was ich sonst noch machen muss? Ich bin absoluter Neuling in PHP. Gruß an alle  Volker
 
  • #8
http://de3.php.net/manual/de/features.file-upload.php

Das PHP-Manual weiß fast so viel wie Wikipedia ;) ;D ;D

gruss conny
 
Thema:

PHP: Bildupload mit sofortiger Anzeige

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben