Datei-Upload-Probleme mit geändertem Dateinamen

damian77

Grünschnabel
Hallo *,

ich hab ein kleines Problem und leider zu wenig Erfahrung, um es selbst zu lösen.
Der untenstehende HTML und PHP Code befindet sich in einer Datei ("upload.php").

Es wird folgendes ausgeführt:
1. Anwender wählt eine lokale Bilddatei aus.
2. Mit dem Befehl "move_uploaded_file" wird die Datei auf den Server hochgeladen und dabei umbenannt.
(geänderter Name wird mittels Zufall erstellt. Dies wird für den Fall gebraucht , dass beim Upload einer Datei, sich bereits eine andere Datei mit gleichem Namen auf dem Server befindet.)
3. Leider wird das hochgeladene Bild(mit gänderten Namen) nicht angezeigt,
da <?php echo $_FILES["datei"]["name"]?> immernoch den lokalen Orginalnamen ausgibt und nicht den geänderten.

Habt Ihr eine Ahnung, wie ich den geänderten , neuen Namen an das <img src=... übergeben kann ?

Schonmal vielen Dank im vorraus...


HTML:
<div id="foto_upload_menue">
   <form action="upload.php" method="post" enctype="multipart/form-data">Datei:    <input id="datei" name="datei" type="file">
   <input id="upload" type="submit" value="Upload"  >
     </form>
</div>

 <!-- hier soll das jeweils hochgeladene Image angezeigt werden-->
     <div id="foto_upload">
           <img id="bild"  src="<?php echo $_FILES["datei"]["name"]?>" width="380px" height="330px" border="1"/>
           <img name="schieber" id="schieber"  src="ausval.gif"  width="153" height="189" />
      </div>



PHP:
 <?php

if($_FILES["datei"]["name"] == "") {
    echo "Keine Datei übertragen.";
  exit;
}

if($_FILES["datei"]["tmp_name"] == "") {
    echo "Fehler bei der Übertragung, Datei zu groß?";
  exit;
}

if($_FILES["datei"]["size"] == 0) {
  echo "Leere Datei!";
  exit;
}

//Uploadnamen ändern
$file_typ = explode(".", $_FILES["datei"]["name"]);

$randomizer1 = rand(0000, 9999);
$_FILES["datei"]["name"]=$randomizer1.".".$file_typ[sizeof($file_typ)-1];

if (file_exists("$_FILES["datei"]["name"])){
$randomizer2 = rand(0000, 9999);
$_FILES["datei"]["name"]=$randomizer2.".".$file_typ[sizeof($file_typ)-1];
}

//Datei uploaden und unter anderen Namen ablegen
move_uploaded_file($_FILES["datei"]["tmp_name"],$_FILES["datei"]["name"]);
echo "Datei ".$_FILES["datei"]["name"]." erfolgreich übertragen.";
<?
 
Hi,

speichere doch den neuen Dateinamen in einer anderen Variablen ($newFileName oder so) als $_FILES["datei"]["name"].
 
Hi Loomes,

das ist ein guter Tip, Danke Dir !
Habs gerade getestet. Aber wie übergebe ich den Variablenwert $newFileName an <img src=... ?

Dachte es könnte mit <php? echo $newFileName ?> gehen, aber das funkt. nicht...
Hast Du eine Idee ?
 
Das sollte auch so funktionieren, steht das alles in einer Datei?
Sonst poste bitte mal die Datei komplett.
 
hier der ganze Quelltext von "upload.php"... liegt beides (php und html) in dieser Datei...

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
     <title>Photo-Side</title>
         <meta name="author" content="Administrator">
         <meta name="editor" content="html-editor phase 5">
          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

  <!-- JAVASCRIPT -->
          <script type="text/javascript" src="text-utils.js"> </script>
          <script type="text/javascript" src="ajax/js_upload.js"> </script>
          <script type="text/javascript" src="wz_dragdrop.js"></script>
          <script language="javascript" type text="text/javascript">
            /*<![CDATA[*/
          </script>

  <!-- CSS-STYLESHEETS -->
   <link rel=stylesheet type='text/css' href='css/styleUpload.css'>
   <!--[if lte IE 7]>
   <link rel="stylesheet" href='css/ie_fixes.css' type="text/css" media="screen, projection" />
   <![endif]-->
  </head>


  <body onload="deaktButtons();">
  <!-- HINTERGRUND-BILD -->
    <div id="hintergrund">
  <!-- HAUPTMENUE - OBEN -->
         <div id="menue">
             <div id="home">
               <a href="index.html"> </a>
             </div>
              <div id="about_us">
               <a href="#"> </a>
             </div>
             <div id="search">
               <a href="#"> </a>
             </div>
             <div id="new_profile">
               <a href="upload.php"> </a>
             </div>
             <div id="change_profile">
               <a href="#"> </a>
             </div>
             <div id="play">
               <a href="#"> </a>
             </div>
             <div id="contact">
               <a href="#"> </a>
             </div>
        </div>

  <!-- MENUE - UNTEN  -->
        <div id="menue_b">
             <span id="impressum">
               <a href="#">Impressum</a>
             </span>
             <span id="AGB's">
               <a href="#">AGB's</a>
             </span>
             <span id="datenschutz">
               <a href="#">Datenschutz</a>
             </span>
             <span id="Werben">
               <a href="#">Werben</a>
             </span>
             <span id="spenden">
               <a href="#">Spenden</a>
             </span>
             <span id="hilfe">
               <a href="#">Hilfe</a>
             </span>
             <span id="faq">
               <a href="#">FAQ</a>
             </span>
         </div>


         <div id="hochladen_button">
             <form method="GET">
             <input id="anmelden" value="Anmelden" type="button" onClick="uploadData();" />
             </form>
         </div>


         <div id="beschr_textdaten">

             <div id="beschr_vorname">Vorname:</div>
             <div id="beschr_geburtsjahr">Geburtsjahr:</div>
             <div id="beschr_religion">Religion:</div>
             <div id="beschr_nationalitaet_landessprache">Nationalität:</div>
             <div id="beschr_nationalitaet_englisch">Nationality:</div>
             <div id="beschr_land_landessprache">Land:</div>
             <div id="beschr_land_englisch">Country:</div>
             <div id="beschr_region">Region:</div>
             <div id="beschr_beruf_landessprache">Beruf:</div>
             <div id="beschr_beruf_englisch">Profession:</div>
             <div id="beschr_fotoalter">Fotoalter:</div>

              <div id="beschr_beschreibungen">
               <div id="beschr_beschr_hoffnung">Was hoffe ich?</div>
               <div id="beschr_beschr_angst">Wovor habe ich Angst?</div>
              </div>
             <div id="beschr_sicherheits_daten">
              <div id="beschr_email">E-Mail:</div>
              <div id="beschr_email_wh">E-Mail:</div>
              <div id="beschr_passwort">Passwort:</div>
              <div id="beschr_passwort_wh">Passwort:</div>
             </div>
          </div>


         <div id="profil_textdaten">
           <div><input id="vorname_inp" type="text" size="20" maxlength="20" ></div>
           <div><input id="geburtsjahr_inp" type="text" size="4" maxlength="4"></div>
           <div><input id="religion_inp" type="text" size="20" maxlength="20"></div>
           <div><input id="nationalitaet_landessprache_inp" type="text" size="20" maxlength="20"></div>
           <div><input id="nationalitaet_englisch_inp" type="text" size="20" maxlength="20"></div>
           <div><input id="land_landessprache_inp" type="text" size="20" maxlength="20"></div>
           <div><input id="land_englisch_inp" type="text" size="20" maxlength="20"></div>
           <div><input id="region_inp" type="text" size="20" maxlength="20"></div>
           <div><input id="beruf_landessprache_inp" type="text" size="20" maxlength="20"></div>
           <div><input id="beruf_englisch_inp" type="text" size="20" maxlength="20"></div>
           <div><input id="fotoalter_inp" type="text" size="10" maxlength="10"></div>

            <div id="beschreibungen">
              <div><textarea id="beschr_hoffnung_inp" cols="22" rows="6"></textarea></div>
              <div><textarea id="beschr_angst_inp" cols="22" rows="6"></textarea></div>
           </div>

            <div id="sicherheits_daten">
             <div><input id="email_inp" type="text" size="18" maxlength="30"></div>
             <div><input id="email_wh_inp" type="text" size="18" maxlength="30"></div>
             <div><input id="passwort_inp" type="password" size="18" maxlength="15"></div>
             <div><input id="passwort_wh_inp" type="password" size="18" maxlength="15"></div>
             </div>
            </div>



  <div id="foto">




            <div id="foto_upload_menue">
               <form action="upload.php" method="post" enctype="multipart/form-data">Datei: <input id="datei" name="datei" type="file">
                 <input id="upload" type="submit" value="Upload" >
               </form>
            </div>







 <!-- hier soll der die Variable in übergeben werden -->
        <div id="foto_upload">
           <img id="bild"  src="<?php echo $newFileName ?>" width="380px" height="330px" border="1"/>
           <img name="schieber" id="schieber"  src="ausval.gif"  width="153" height="189" />
           <?php echo $newFileName ?>
        </div>


<div id="screenshot">
             <form name="formular" method="GET">
               <input type="hidden" id="x">
               <input type="hidden" id="y">

             <input id="verkleinern" value="<" onClick="foto_verkleinern();" type="button">

                <input id="horizontal" name="zoomer"  value="horizontal" type="radio">
                horizonatal
                <input id="vertikal" name="zoomer" value="vertikal" type="radio">
                vertikal
                <input id="vert_horiz" name="zoomer"  value="vert_horiz" type="radio" checked="checked">
                beide

             <input id="vergroessern" value=">" onClick="foto_vergroessern();" type="button">
             <input id="screenshot_btn" value="screenshot" onClick="sendeKoord();" type="button">
             </form>
         </div>

       </div>

       </div>
</body>


<?php 



if($_FILES["datei"]["name"] == "") { 
    echo "Keine Datei übertragen."; 
  exit; 
} 

if($_FILES["datei"]["tmp_name"] == "") { 
    echo "Fehler bei der Übertragung, Datei zu groß?"; 
  exit; 
} 

if($_FILES["datei"]["size"] == 0) { 
  echo "Leere Datei!"; 
  exit; 
} 

//Uploadnamen ändern 
$file_typ = explode(".", $_FILES["datei"]["name"]); 

$randomizer1 = rand(0000, 9999); 
$_FILES["datei"]["name"]=$randomizer1.".".$file_typ[sizeof($file_typ)-1]; 

if (file_exists("$_FILES["datei"]["name"])){ 
$randomizer2 = rand(0000, 9999); 
$_FILES["datei"]["name"]=$randomizer2.".".$file_typ[sizeof($file_typ)-1]; 
} 

//Datei uploaden und unter anderen Namen ablegen 
move_uploaded_file($_FILES["datei"]["tmp_name"],$_FILES["datei"]["name"]); 
echo "Datei ".$_FILES["datei"]["name"]." erfolgreich übertragen."; 

//Uploadnamen ändern
$file_typ = explode(".", $_FILES["datei"]["name"]);

$randomizer1 = rand(0000, 9999);
$newFileName =$randomizer1.".".$file_typ[sizeof($file_typ)-1];

if (file_exists("tmp_fotos/".$_FILES["datei"]["name"])){
$randomizer2 = rand(0000, 9999);
$newFileName =$randomizer2.".".$file_typ[sizeof($file_typ)-1];
}



//Datei uploaden und unter anderen Namen ablegen 
move_uploaded_file($_FILES["datei"]["tmp_name"],$newFileName);
echo "Datei ".$newFileName ." erfolgreich übertragen.";

<? 
 </html>
 
Hallo,
der vorherrige Code ist vielleicht etwas verwirrend...

also prinzipiell müsste ich nur wissen, wie ich einen Variablenwert aus PHP in HTML aufrufen kann, wobei sich der HTML- und PHP-Code in einer gemeinsamen Datei (z.B. bsp.php) befindet...

Wisst ihr, warum html die Variable nicht ausliest ? Wie kann man das hinbekommen ?

Kann es sein, dass der php-Teil mit in <body> rein muss ?



HTML:
<html>
<head></head>

<body>


 <!-- hier soll der die Variable aus php-Teil ausgegeben werden, aber es funkt nicht. -->
        <?php echo $newFileName ?>
   
</body>

<?php
global $newFileName;
$newFileName="testAusgabe";
?>
</html>
 
Es ist ganz egal wo deine Anweisung steht:

PHP:
 <?php echo $newFileName ?>
muss folgendermaßen aussehen:

PHP:
 <?php echo ($newFileName); ?>

bitte prüfe aber vorher mal zum test was bei folgendem Befehl steht:
PHP:
<?php var_dump($newFileName); ?>

In einer .html Datei funktioniert es nicht. Ich hoffe das ist dir bewusst. Der Interpreter (PHP-Parser) nimmt nur .php Dateien. Alle anderen werden davon ignoriert (na .php3 und .php4 würd er auch nehmen)
 
PHP:
 <?php echo $newFileName ?>
muss folgendermaßen aussehen:

PHP:
 <?php echo ($newFileName); ?>

Mit Sicherheit nicht!

In einer .html Datei funktioniert es nicht. Ich hoffe das ist dir bewusst. Der Interpreter (PHP-Parser) nimmt nur .php Dateien.

Auch falsch. Es kommt auf die Serverkonfiguration an! Auch .html Dateien können geparst werden!
 
Zuletzt bearbeitet:
Bauchschuß!
Ich brauch kein Simikolon am Ende einer Zeile in PHP, das ist mir neu.

Standardmäßig sind .html Datein aber nicht beim Parser eingerichtet oder?
Zudem wäre es auch nicht optimal gewählt, führt nur zu unnötigen Verwirrungen.
Gut, beim Ihm klappe es nicht, ich wollte nur einen Tipp geben!
Aber vielleicht sehe ich es auch nur so :-(
Sorry:eek:
 
Hallo Steusi, hallo Asipak.. ,

erstmal vielen Dank für die schnellen Antworten !

die Datei habe ich test.php benannt, also müsste es der php-Server akzeptieren oder ?

Bei

1. <?php echo ($newFileName); ?>
wird einfach nix angezeigt im browser, wenn ich mir den Quelltext angucke dann ist diese Zeile auch ausgeblendet...

2. <?php var_dump($newFileName); ?>
hier wird nur NULL ausgegeben...

Irgendwo hängt der Quelltext noch, oder ich mache etwas grundsätzliches falsch ?


hier der Quelltext den ich in einer test.php reinkopiert habe...

HTML:
<html>
<head></head>

<body>


 <!-- hier soll der die Variable aus php-Teil ausgegeben werden, aber es funkt nicht. -->
        <?php echo ($newFileName); ?>

        <?php var_dump($newFileName); ?>

</body>

<?php
global $newFileName;
$newFileName="testAusgabe";
?>
</html>
 
Zurück