• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Kompletten Dateipfad als Variable übergeben

schlegel.berlin

New member
Hallo Leute,

nun habe ich doch wieder einmal eine Frage/ein Problem.

Ich wähle eine Datei mit
Code:
<input type=file name=probe ...
aus und muss den komplettem Pfad der ausgwählten Datei nebst Dateinamen als Variabale an eine andere Seite übergeben.

Dort muss der komplette Pfad wieder zur Verfügung stehen, da die Datei auf dieser Seite als Variable (value) in den Parameter eines Java-Applett eingesetzt wird.

Ich habe das Gefühl, das mein Hirn gerade äußerst "vernagelt" ist, denn ich finde keine Lösung ...

Kann mir jemand von Euch helfen?

Liebe Grüße, Karin
 
Hallo Leute,

vergesst meinen Post.
Die Sache hat sich erledigt. Habe eine Lösung gefunden. Vielleicht nicht die eleganteste, aber wirksam ...

Gute Nacht, Karin
 
Zeig doch mal die Lösung. Denn meines Wissens übermittelt ausschließlich der IE den ganzen Pfad bei einem solchen Feld.
Wäre gespannt, wie du das gelöst hast.
 
Du hast völlig Recht...
Ich war einfach so froh über meine Idee zur Problemlösung, dass ich schlicht in der Eile vergaß, mich mitzuteilen. Sorry ...


Also, da muss ich zunächst die Aufgabenstellung nochmal genauer beschreiben:

PROLOG:
Letztlich geht es um einen Bilder-Upload via Browser auf den Server. Da es sich um bis zu 500 jpg-Dateien handelt, die jeweils bis zu ca. 3Mb haben, gilt es, sohl fil_size-limit als auch timeout des Servers zu "überlisten".
Das mach ich mit einem Java-Applet, das pro Datei eine eigene Anfrage an der Server stellt, so dass niemals eines der Server-Limits erreicht wird.
Anmerkung: Die Upload-Geschwindigkeit entspricht der eines FTP-Uploads

Dieses Applet erlaubt es, neben nahezu unzähligen anderen Features, ein Wasserzeichen (Grafik) mit einstellbarer Transparenz in die JPGs einzubinden. Dies geschieht dort über einen eigenen Applet-Parameter, der, in meinem Fall, nicht statisch auf eine bestimmte Grafik festgelegt, sondern aus einer PHP Variablen bestehen muss, da sich die Grfaik von Upolad zu Uplad ändert.

Die Aufgabe war nun, diese Grafik auf dem PC zu browsen und als Variable dem Applet zu übergeben. Dabei darf der Pfad natürlich nicht verloren gehen.

Lösung:
Ich wähle also die Datei aus mit <input type=file name=probe... (enctype='multipart/form-data') und übergebe den Wert mit POST an eine 2 Seite, die nichts anderes tut, als die Bild-Datei in einem speziellen Verzeichnis physisch auf dem Server abzulegen. Ist dies erfolgt, wird automatisch (mit entsprechender Rückmeldung) wieder sofort auf die ursprünglich Seite zurückgeleitet, wo die Grafik dann verkleinert angezeigt wird.

Navigiert man nun weiter auf die Upload Seite, in der das oben beschriebene Applet eingebunden ist, lese ich die Grafik aus dem Verzeichnis aus und füge sie mit <? echo §variable; ?> als Value in den Applet-Parameter ein. FERTIG!

Resume:
Mag vielleicht ein bssichen um die Ecke gedacht sein, funktioniert aber prächtig und ich muss mir nicht weiter das Hirn zermartern, weil diese Lösung Browser unabhängig funktioniert.

Jetzt hoffe ich, mich verständlich ausgedrückt und nicht zu viele Tippfehler eingebaut zu haben.
Liebe Grüße, Karin

PS:
a) Wenn jemand einen eleganteren Vorschlag kennt, dann bin ich sehr wissbegierig und äußert lernwillig ...
b) Das Applet (ich nutze "JavaPowUpload") ist extrem flexibel und ist zu haben bei elemt-it.com.
Das sind sehr nette und kompetente Russen, die äußerst schnell und felixibel beim Konfugieren Ihrer Upoloader sind. Auch wenn es die nicht ganz kostenlos gibt, kann ich die nur empfehlen ... (haben verschieen Uploader mit einer Menge Demos auf Ihrer Seite. Und die Trial Versonen sind natürlich kostenlos. Sie laufen auch länger als die angegeben 30 Tage, nur das dann eben immer wiedr mal ein kleiner Hinweis erscheint, dass es ich um eine Trialversion handelt.
Wenn jemand zu den Uploadern spezifische Fragen hat, kann sie/er sich gerne bei mir melden. Ich habe gerade eine knapp 2-wöchige, intensive "Lernphase" hinter mir ...
c) Wenn jemand die Scripte benötigt, poste ich diese natürlich. Ich dachte mir aber, dass, in diesem speziellen Fall, nicht die Scripte so wichtig seien, sondern die Beschreibung des Weges zur Problemösung. Was die Scripte betrifft, habe ich insoweit das Rad sicher nicht neu erfunden, sondern auf Übliches zurückgegriffen ..
 
Zuletzt bearbeitet:
Gerne doch "mikdoe"....

Wie oft habt ihr 'Script-Götter' mir schon entscheidende Hilfe gewährt.
Bin ja froh, wenn ich auch mal - ein bisschen wenigstens - zurück geben kann.

Ich hoffe es hilft dem einen oder anderen "Newbie" weiter...

Hab einfach mal präventiv die beiden (schnell noch kommentierten) Scripte drangehängt, damit sich jemand daran bedienen kann.

Habe die Scripte allerdings von fast allem, was nicht für diese spezielle Funktion notwenig ist, 'befreit', damit es für Newbies übersichtlicher ist.
Das einzig unnötige, das noch drin ist, sind ein paar CSS Spielereien zum Gestalten von Input-fields und Buttons.

Was aber - aus Übrsichtlichkeitsgründen - fehlt, ist das Abfangen von Fehlern in der 'logo_speichern.php', z.B. wenn eine Datei zu groß ist, oder nicht die richtige Endung hat. Das ist etwas, woran sich Newbies gerne ranmachen können. Hat gute Lerneffekte :) Da gibt es ja auch noch php.net und eben dann, wenn garnix mehr geht, dieses wundervolle Forum ...

So jetzt hier die beiden Dateien.

Zuerst die Seite, auf der die Grafik / das Logo ausgwählt wird (die Datei hat den Namen 'logo_auswahl.php'):
Code:
<?
/* =================================================
Für Newbies, die die Scriptschnipsel verwenden wollen:
Ihr müsst eien ordner anlegen mit dem Namen 'watermark',
das in dem gleichej Vrezeichnis liegen muss wie die beiden php-seiten

Im Übrigen habe ich gleich noch einbisschen CSS zum gestalten von input-field und Button eingefummelt.

Viel Spaß
=================================================== */
// Das im Verezcihnis 'watermark gespeicherte Logo wird ausgelesen
if ($handle = opendir('watermark')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$logo = "watermark/".$file;
}
}
closedir($handle);
}
if($logo != "")
{
$size = getimagesize($logo);
$width = $size[0]/2;
$height = $size[1]/2;
}
?>
<html>
<body>

<form action='logo_speichern.php' target='_self' method='post' enctype='multipart/form-data' name='logoform'>

					<input type='file' name='probe' size='45' style='width:330px;height:19px;font-size:10px;background-color:#FFFFE0;color:#DD0000;font-family:verdana,arial;font-size:11px;border-style:solid;border-color:#7795AD;border-width:1px;'>
					<br />	<br />
					<input type=submit value='Das ausgewählte Logo speichern' style='font-family:verdan,arial;font-size:11px;width:330px;height:19px;border-color:#7795AD;border-width:1px;' >
					
</form>
<br />
<!-- Hier wird das Logo nach dem Speichern imOrdner "watermark" angezeigt -->
<? if($logo != ""){echo "Das momentan verwendete Logo:";} ?><br />
<img src = "<? echo $logo; ?>"  width="<? echo $width; ?>" height="<? echo $height; ?>"  style="border:dotted 1px #999999 "/>
</body>
</html>


Jetzt kommt die 2. Seite ('logo_speichern.php'), mit der die vorher ausgewählte Datei gespeichert wird:

Code:
<?php

echo" <html><head><link rel='stylesheet' type='text/css' href='../../support/edit.css'><style type='text/css'><!--BODY {overflow-x: hidden;overflow-y: hidden;} --></style></head><body bgcolor='#FFFFFF'><table bgcolor='#FFFFFF' style='width:100%;height:95%;margin-top:40px;'><tr valign='middle'><td><center>";


$max_byte_size = 100000; // maximale Größe der Bilddatei dfinieren (100 Kb in diesem Fall)
$allowed_types = "(jpg|png)"; // erlaubte Dateiendungen definieren (beliebig erweiterbar)
$pic=$_FILES["probe"]["name"];
$folder_no = 'watermark'; // Hier ist der Verzechnissname definiert, in dem das Logo (die Grafik) abgelegt wird


// Alle eventuell im Ordenr "watermark" befindlichen Dateien löschen 
$verzeichnis = opendir ($folder_no); 
while ($file = readdir ($verzeichnis)) 
{ if ($file != "." && $file != "..") 
{ 
/* Jetzt wird ein eventuell vorhandener Schreibschutz einer im Ordner befindlichen Datei entfernt,
damit auf jeden Fall alle Datein im Verzeichnis 'watermark' gelöscht werden können.*/

chmod('watermark/'.$file,0777); 

// Jetzt wir die Daeit'alte' im Ordner gelöscht
unlink ('watermark/'.$file); 
} 
} 
closedir ($verzeichnis); 

// Abfrage, ob überhaupt ein Bild ausgewählt wurde
if($pic == '')
{
echo "<div style='font-size:12px'><font color='#FF0000'><b>Benutzer-Fehler!</b></font></font><br>Bitte zuerst ein Logo auswählen!</font></div>";

echo "<a href='upload_logo_select.php'>zurück zur Logoauswahl</a>";
exit;
}

// Formular erfolgreich abgeschickt
if($_POST["submit"] = "Upload") {

// Wurde wirklich ein Bild hochgeladen?
if(is_uploaded_file($_FILES["probe"]["tmp_name"])) {

// Gültige Datei-Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
if(preg_match("/\." . $allowed_types . "$/i", $_FILES["probe"]["name"])) {

// Ist die Datei nicht zu groß
if($_FILES["probe"]["size"] <= $max_byte_size) {


// Alles OK -> Datei jetzt in das Verzeichnis 'watermark' kopieren
if(copy($_FILES["probe"]["tmp_name"], "./$folder_no/".$pic )) // $folder_no ist der Ordner, in dem das Bild liegt!
{
echo "Das ausgewählte Datei wurde gespeichert  ...";
}
}
}
}
}


 ?>
 <script type="text/javascript">
{
window.setTimeout('location = "logo_auswahl.php"',1800);// 1800 ms nach Eredigung wird auf die erste Seite zurückgeleitet
}
</script>
</center></td></tr></table></body></html>
 
Zuletzt bearbeitet:
Zurück
Oben