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
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
folgendes Zuweise
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:
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 :-(
$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:
der Variablen $file_dir wird der String "kennung" zugeordnet.
hier wird der Variablen $file_dir der Wert der Variablen $Kennung zugeordnet.
Gruß
Günter
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
schreibt er das Wörtchen Kennung vor dein Dateinamen - logisch!
aber bei
schreibt er nicht den Wert der Variable $Kennung vor den Dateinamen. Ich weiß jedoch, dass dieser existiert ich kann ihn z. B so auslesen
Versteh ich nicht :-(
$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,
Bei mir läuft das.
Ich nehme an, Dein Fehler ist an anderer Stelle??
Gruß
Günter
<?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.
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.
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
<?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
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
Wie kann ich das denn eventuell anders lösen?
bye
Christoph
Antwort 12 von Guenter
Hallo,
in Deiner anfrage schreibst Du:
Überprüfe mal Register_Globals On oder Off.
siehe
https://supportnet.de/discussion/listmessages.asp?AutoID=140095
Gruß
Günter
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.
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
Vielen Dank das du dir die zeit genommen hast mir zu helfen.
MfG
Christoph
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

