Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Dateiname Variable zuweisen





Frage

Hi! ihr erinnert euch, ich habe letzte Woche wegen einem Script zum Bilder hochladen und via email versenden Angefragt. Ich habe mit dem per email versenden nun gecancelt und lasse die Sachen nun nurnoch auf einen bestimmten Ordner meiner Seite übertragen. Mal kurz der Ablauf in einem ersten html Formular wird der User gebeten seinen Namen einzugeben, dieser wird in der Variable $Kennung gespeichert, es öffnet sich das Formular jobnext.php hierhin wird die Variable auch noch 1A übergeben - alles kein Problem. Jetzt mal kurz das Script und dann meine Frage. [code] <?php // Wieviele Dokumente sollen auf einmal uebertragen werden? $numoffile = 3; //Upload Ordner $file_dir = ""; if ($_POST) { for ($i=0;$i<$numoffile;$i++) { if (trim($_FILES['myfiles']['name'][$i])!="") { $newfile = $file_dir.$_FILES['myfiles']['name'][$i]; move_uploaded_file($_FILES['myfiles']['tmp_name'][$i], $newfile); $j++; } } } if (isset($j)&&$j>0) print "Ihre Datei(en) wurden hochgeladen! <br>"; print "<form method='post' enctype='multipart/form-data'>"; for($i=0;$i<$numoffile;$i++) { print "<input type='file' name='myfiles[]' size='30'><br>"; } print "<input type='submit' name='action' value='Upload'>"; print "</form>"; ?> [/code] Was muss ich nun machen, damit die upgeloadete Datei nach folgendem Schema gespeichert wird $Kennung+Dateiname. Also wenn Herr Mueller Schulze ein Foto hochläd welches z.B Bewerbungsfoto.jpg heißt, dann soll die Datei unter dem Namen "Mueller Sculze Bewerbungsfoto.jpg" gespeichert werden. nochwas wenn ich schon dabei bin. Kann ich die Dateitypen, für die der upload möglich seien soll einschränken? MfG Christoph

Antwort 1 von Adik

^ ^
^ ^
^ ^
^ ^
^ ^


Antwort 2 von Nessus

Hi,

die Namenszuweisung machst Du aus den Vars die aus dem Formular kommen und verkettest diese einfach mit einem Punktalso $vorname.$nachname.

Überprüfen der Dateiendung geht mit einer einfachen Kontrollstruktur (if) und den Befehl strchr() ->http://www.php.net/manual/de/function.strchr.php
Bzw. mit regulären Ausdrücken:
http://www.php-center.de/faq/faq-regexp.html#regexp-6

Bitte php.net/dclp.de bei der Gelegenheit Bookmarken

Antwort 3 von Adik

Sorry wenn ich nerve aber ich versteh das noch nicht so recht. Schau mal: Wenn ich z.B der Variablen

$file_dir  = ""; 


folgendes Zuweise


$file_dir  = "kennung";


Dann heißt die Datei später KennungDateiname.jpg. Das ist ja auch eigentlich logisch. (Mal bis auf die Tatsache, das ich eigentlich dachte man würde damit den Speicherort beeinflussen können :-)) Naja ich versteh da manche Sachen noch nicht so ganz. Wenn ich nun aber schreibe:


$file_dir  = $Kennung


Dann sollte er doch den aktuellen Inhalt der Variable vor den Dateinamen hauen oder nicht?

ich werd noch verrückt bei der Sache. Ich hab mir deine links schon angeschaut und ich befasse mich auch schon paralell zu diesen Anfragen hier anderweitig intensiv mit der Geschichte aber ich bin was php angeht nunmal noch ein ziemlicher Anfänger :-(



Antwort 4 von Adik

auf ein neues...

Antwort 5 von Guenter

Hallo,

meines Erachten bedeutet:


$file_dir  = "kennung";

der Variablen $file_dir wird der String "kennung" zugeordnet.


$file_dir  = $Kennung


hier wird der Variablen $file_dir der Wert der Variablen $Kennung zugeordnet.

Gruß
Günter

Antwort 6 von Adik

Ja, genau das dachte ich auch. Aber es funktioniert ja scheinbar nicht, denn bei


$file_dir  = "kennung";


schreibt er das Wörtchen Kennung vor dein Dateinamen - logisch!

aber bei


$file_dir  = $kennung;


schreibt er nicht den Wert der Variable $Kennung vor den Dateinamen. Ich weiß jedoch, dass dieser existiert ich kann ihn z. B so auslesen


echo " $Kennung";


Versteh ich nicht :-(


Antwort 7 von Adik

Kann mir denn niemand helfen :-(

Antwort 8 von Guenter

Hallo,


<?php
$file_dir = "Kennung";
$Kennung = "test";
$file_dir = $Kennung;

echo "$file_dir";
echo "$file_dir.$Kennung";

?>


Bei mir läuft das.
Ich nehme an, Dein Fehler ist an anderer Stelle??
Gruß
Günter

Antwort 9 von Adik

ja du hast Recht! Der Fehler liegt woanders, das Script verliert den Inhalt der Variablen. Schau mal.


		<?php  
	echo "hallo $Kennung";
// Wieviele Dokumente sollen auf einmal uebertragen werden? 
$numoffile = 3;  
//Upload Ordner
$file_dir_pre  = test;
$file_dir  = $file_dir_pre.$kennung;
if ($_POST) 
{  
   for ($i=0;$i<$numoffile;$i++) 
   {  
      if (trim($_FILES['myfiles']['name'][$i])!="") 
      {  
         $newfile = $file_dir.$_FILES['myfiles']['name'][$i]; 
         move_uploaded_file($_FILES['myfiles']['tmp_name'][$i], $newfile); 
              $j++; 
      }  
   }  
}  


if (isset($j)&&$j>0) print "Ihre Datei(en) wurden hochgeladen! $file_dir <br>"; 
print "<form method='post' enctype='multipart/form-data'>"; 
for($i=0;$i<$numoffile;$i++) 
{  
   print "<input type='file' name='myfiles[]' size='30'><br>"; 
}  
print "<input type='submit' name='action' value='Upload'>"; 
print "</form>"; 
?>


Die Variable kennung steht für ein Inputfeld, wo die user ihren Namen eintragen, das geschieht auf einem Formular, welches vorher aufgerufen wird. Das die Übergabe geklappt hat sehe ich daran, dass ich mit "Hallo Christoph" begrüßt werde. Bis hierhin ist also alles in Ordnung.

Jetzt kommt die Variable $file_dir_pre ins Spiel. Ihr Wert ist "test"
die Variable file_dir bestimme ich wie folgt.


$file_dir  = $file_dir_pre.$kennung;


Ihr inhalt sollte nun bspw. "test.christoph" sein!

Wie du sehen kannst, lasse ich mir die Variable am Schluss nochmal auslesen und siehe da: Ihr Wert ist einfach nurnoch "test"

Der Inhalt der Variablen $kennung ist also irgendwo futsch gegangen aber was mach ich nur falsch?

Danke schonmal

Christoph


Antwort 10 von Guenter

Hallo Christoph,

die Variablennamen in PHP sind case-sensitive.
Strings in Anführungszeichen setzen.

Gruß
Günter

Antwort 11 von Adik

Schade aber daran lag´s nicht. Ich habe mittlerweile schon tausende Sachen ausprobiert. Er verliert den Wert der Variable $Kennung sobald man auf "Upload" klickt.

Wie kann ich das denn eventuell anders lösen?

bye

Christoph


Antwort 12 von Guenter

Hallo,

in Deiner anfrage schreibst Du:
Zitat:

dieser wird in der Variable $Kennung gespeichert, es öffnet sich das Formular jobnext.php hierhin wird die Variable auch noch 1A übergeben - alles kein Problem.


Überprüfe mal Register_Globals On oder Off.

siehe
https://supportnet.de/discussion/listmessages.asp?AutoID=140095

Gruß
Günter

Antwort 13 von Adik

Hi!

Ja daran wird es liegen aber ich habe das ganze jetzt anders gelöst. Ich speicher die Dateien einfach unter dem Schema ip+Dateiname, das erfüllt für mich in etwa den gleichen Zweck und ist halt wesentlich einfacher


<?php  
// Wieviele Dokumente sollen auf einmal uebertragen werden? 
$numoffile = 3;  
//Upload Ordner
echo $REMOTE_ADDR;
$file_dir  = $REMOTE_ADDR;
if ($_POST) 
{  
   for ($i=0;$i<$numoffile;$i++) 
   {  
      if (trim($_FILES['myfiles']['name'][$i])!="") 
      {  
         $newfile = $file_dir.$_FILES['myfiles']['name'][$i]; 
         move_uploaded_file($_FILES['myfiles']['tmp_name'][$i], $newfile); 
              $j++; 
      }  
   }  
}  


if (isset($j)&&$j>0) print "Ihre Datei(en) wurden hochgeladen! <br>"; 
print "<form method='post' enctype='multipart/form-data'>"; 
for($i=0;$i<$numoffile;$i++) 
{  
   print "<input type='file' name='myfiles[]' size='30'><br>"; 
}  
print "<input type='submit' name='action' value='Upload'>"; 
print "</form>"; 
?>


Vielen Dank das du dir die zeit genommen hast mir zu helfen.

MfG

Christoph