absoluten Pfad auslesen

Michelle85

Mitglied
Hallo zusammen,

ich schreibe gerade ein kleines CMS in PHP,
und habe mal eine kleine Frage,
und zwar beschäftige ich mich gerade mit einer Import-Seite,
auf der der Benutzer den Pfad einer PDF Datei auswählt, diesen Pfad möchte ich dann in eine temporäre MySQL Tabelle speichern und nach Freigabe in meine bestehende Tabelle importieren.

Ich habe versucht dies durch ein Upload-Formular zu realisieren.
Leider komme ich nicht an den absoluten Pfad ran.

Nach etlichen Versuchen und Stundenlangem googeln, habe ich dann versucht den Pfad durch Javascript auszulesen.
Erhalte aber nur nen Pfad von ner temporären Datei.

Hier ein Bsp:

Den Pfad der Datei, die ich ausgewählt habe: C:\Dokumente und Einstellungen\Benutzer\Desktop\Test.pdf
Und hier der Pfad den mir mein Skript ausgibt: c:\apachefriends1.4.15\xampp\xampp\tmp\php10.tmp


Hier mal mein Code:
Code:
PFAD();

function PFAD ()
{
echo"<h2><CENTER>PDF Dateien</CENTER> </h2>";
echo"<form enctype='multipart/form-data' method='post' action='Import.php' >";
echo" <table width='160' align=center >";
echo"<tr>";
echo"<td>";
echo"<p><strong>Laden sie die gewünschte PDF Datei hoch</strong><br><br>";
echo"</td>";
echo"</tr>";
echo"<tr>";
echo"<td>";
echo"<input type='file' name='file' size='30' ></p>";
echo"<input type='hidden' name='path'>";
echo"</td>";
echo"</tr>";
echo"<tr>";
echo"<td>";
echo" <input type='submit' name = 'submit' value='hochladen' onClick='javascript:path.value =datei.value'>";
echo"</td>";
echo"</tr>";
echo"</table>";
echo"</form>";
echo"</CENTER>";

echo"$file";
}

Meine Frage lautet nun : Wie kann ich den absoluten Pfad nun auslesen ?
 
Also mit JavaScript wirst Du da wohl nicht weit kommen, denn JavaScript laeuft ja nur im Client, und ich denke Du willst wissen wo die Datei auf dem Server liegt.
Sagen wir mal Du hast unterhalb des Document-Roots ein Verzeichnis /files wo Du Deine Dateien reinkopierst, dann ist der absolute Pfad so festzustellen:
PHP:
$path=$_SERVER["DOCUMENT_ROOT"].'/files';
Und vielleicht koennen Dir auch die Funktionen pathinfo() oder realpath() dabei weiterhelfen.
 
Danke für die Hilfe!
Hab das mit dem javascript verworfen.

Ich bekomme aber immernoch nicht den absoluten Pfad ausgegeben, sondern nur den Pfad der temporären Datei.

Hier mein neuer Quellcode:

Code:

PHP:
PFAD();

function PFAD ()
{
echo"<h2><CENTER>PDF Dateien</CENTER> </h2>";
echo"<form enctype='multipart/form-data' method='post' action='Import.php' >";
echo" <table width='160' align=center >";
echo"<tr>";
echo"<td>";
echo"<p><strong>Laden sie die gewünschte PDF Datei hoch</strong><br><br>";
echo"</td>";
echo"</tr>";
echo"<tr>";
echo"<td>";
echo"<input type='file' name='file' size='30' ></p>";
echo"<input type='hidden' name='path'>";
echo"</td>";
echo"</tr>";
echo"<tr>";
echo"<td>";
echo" <input type='submit' name = 'submit' value='hochladen' >";
echo"</td>";
echo"</tr>";
echo"</table>";

$path=$_SERVER["DOCUMENT_ROOT"].'/ressources';
echo"$path";

echo"</form>";
echo"</CENTER>";
}

Ich muss irgendwie verhindern, dass die Datei in den XAMPP Ordner hochgeladen wird, sonst komme ich nicht an den Pfad ran.
Also müsste ich irgendwie den Submit Button abfangen.

Weiß jemand wie man das realisieren kann
 
Welchen Pfad willst Du denn jetzt genau haben?
Den wo die Datei auf dem Client zu finden ist oder wo die Datei nach dem Upload abgelegt wird?
Nach dem Upload kommt die Datei erstmal in ein temporaeres Verzeichnis, meist /tmp, und hat einen ziemlich wirren Namen.
Mittels move_uploaded_file() wird diese Datei dann an ihren Bestimmungsort geschoben.
Wenn Du vor move_uploaded_file() mit realpath() den Pfad holen willst ist klar, dass Du den Pfad zur temporaeren Datei bekommst. Wenn Du danach den Pfad der verschobenen Datei holst bekommst Du den Pfad wo sie nun nach dem Upload von Dir hingelegt wurde.

Aber irgendwie glaub ich grad, dass Du wissen willst wo die Datei auf dem Client lag, der Sinn dessen bleibt mir aber absolut verschlossen.

Sorry, hatte grad dummerweise mal den falschen Button gedrueckt und kurzzeitig Deinen Post ueberschrieben. :rolleyes:
Sollte jetzt aber alles wieder okay sein.
 
Ich will die Datei ja gar nicht uploaden,
ich möchte nur den Pfad der Datei wissen,
damit ich ihn in meiner MySQL Datenbank speichern kann.

In meinem CMS gibt der Benutzer z.B. Rechnungsdatum Rechnungsnummer und die Rechnungssumme ein, diese Daten werden dann gespeichert.
Auf der Import-Seite, wählt er dann die dazugehörige Rechnungs-PDF aus.
Diesen Pfad möchte ich nun ebenfalls in der Datenbank ablegen ,damit man immer schnellen Zugriff auf die eingescannten Rechnungen hat.
Die PDFs liegen zentral auf dem Server, dass jeder Benutzer zu jeder Zeit Zugriff auf die Dateien hat.
 
An den Pfad kommst Du glaub ich nicht dran.
Ich werd mal ein wenig was probieren, aber ich denke nicht, dass das geht.

Nachtrag: Okay, es geht doch.
Nimm den Encoding-Type aus dem Formular, dann kannst Du den Dateinamen aus $_POST lesen.
Beispiel:
filetest.php
PHP:
<?php
if (isset($_POST['myfile']))
	{
		echo $_POST['myfile'];
	}
?>
<form method="post" action="filetest.php">
<input type="file" name="myfile">
<input type="submit">
</form>
 
Nichts zu danken.
Also ich hab's vorhin probiert und mir wird der lokale Pfad zur Datei ausgegeben.
Ich bin jetzt nicht sicher ob die Datei uebertragen wird, aber auf jeden Fall wird PHP davon nichts mitkriegen. Um festzustellen ob die Datei wirklich zum Server geschickt wird muesste man sich den Datenaustausch naeher ansehen.
Aber da das wohl eh nur fuer's LAN ist denk ich mal macht das nichts aus wenn die Datei nun hochgeladen wird oder nicht.

Uebrigens, falls Dein Problem damit geloest ist denk bitte daran den Thread als erledigt zu markieren.
 
Da denkt man dieses Thema wäre abgehakt da kommt nen kleiner Dummi und frischt das wieder auf weil der doch noch nen Problem hat ^^.

Ich weiß nicht obs am neuen PHP aber die Oben genannten Tipps helfen mir zwar an den Dateinamen ranzukommen aber das konnte ich auch mit dem enctype

Aber an den absoluten Pfad im updload-Feld komme ich trotzdem nicht ran.

hier mein Quelltext:

HTML:
<div id="formIn">
			<form action="<?php $PHP_SELF?>" method="post">
				<label>Cover:</label><input type="file" name="upload"><br>
				<input type="submit" name="submit" value="Eintragen" id="submit"> <input id="submit" type="reset">
			</form>
		</div>

ich habe mit folgenden zeilen textausgaben gemacht:

echo "<pre>";
print_r($_POST); //Anzeige der Datei ohne Pfad
echo "</pre>";

echo "<pre>";
print_r(pathinfo($_POST['upload'])); //Anzeige der Datei ohne Pfad
echo "<pre>";

echo "realpath(): ".realpath($_POST['upload']); //keine Anzeige

bitte um eure hilfe

danke schonmal an alle

MFG Fuma15
 
Zurück