Vollständige Version anzeigen : Upload-Pfade
Hallo,
ich habe in einem PHP-Skript einen Upload von mehreren Dateien. Wenn ich das richtig gelesen habe landen die Dateien temporär im Verzeichnis "/phptmp".
Ich kopiere die Dateien noch im selben Skript in ein anders Verzeichnis, aber dort kommt nichts an. Entweder habe ich einen Fehler im Skript (dann entschuldige ich mich für´s posten in der falschen Rubrik) oder die Pfadangaben sind falsch.
Hier mein Skript (Auszug):
foreach($HTTP_POST_FILES as $strFieldName => $arrPostFiles) {
$strFileName = $arrPostFiles[name];
$strFileTemp = $arrPostFiles[tmp_name];
@copy("phptmp/$strFileTemp", "html/ein/anderes/verzeichnis/$strFileName");
Ich sehe da keinen Fehler, also denke ich eher das die Pfadangaben falsch sind.
Aber das werdet Ihr mir bestimmt gleich sagen :D
Zu den Pfadangaben: Ist phptmp wirklich ein Unterverzeichnis von dem verzeichnis, das Dein PHP-Skript beherbergt?
Du hast hier einen relativen Pfad. Schon mal einen absoluten Pfad ausprobiert?
Original geschrieben von CSe
Zu den Pfadangaben: Ist phptmp wirklich ein Unterverzeichnis von dem verzeichnis, das Dein PHP-Skript beherbergt?
Nein aber ich hab hier im Forum gelesen das sei das temporäre Verzeichnis für Uploads! Mein Zielverzeichnis ist ein direktes Unterverzeichnis (absolut zum Skript)
Original geschrieben von CSe
Du hast hier einen relativen Pfad. Schon mal einen absoluten Pfad ausprobiert?
Du meinst aus meinen Skript raus (z.B. "../xx/xx/phptmp") und dann in das Vielverzeichnis (/xx/xx/xx/xx usw.)?
Also der Copy-Befehl so:
@copy("../xx/xx/phptmp/$strFileTemp", "html/ein/anderes/verzeichnis/$strFileName");
[QUOTE]Original geschrieben von msniper
[B]Nein aber ich hab hier im Forum gelesen das sei das temporäre Verzeichnis für Uploads! Mein Zielverzeichnis ist ein direktes Unterverzeichnis (absolut zum Skript)
Dein Skript liegt im Verzeichnisbaum unter html Deines Paketes. Im gleichen Verzeichnis, in dem sich das html-Verzeichnis befindet, befindet sich auch das phptmp-Verzeichnis. Beide liegen sozusagen im Hauptverzeichnis Deines Paketes. Das siehst Du z.B. genau dann, wenn Du Dich per FTP einloggst.
Das Hauptverzeichnis Deines Pakets müßte /home/web<XYZ> sein, aber ich kann mich auch irren.
Mir ist nicht bekannt, daß phptmp in jedem Verzeichnis angelegt wird, in dem ein Upload-Skript ausgeführt wird.
Ich habs mal getestet. Hab einfach eine includierte Datei gelöscht. Die Fehlermeldung nennt den Pfad "var/www/webXXX/html/usw.....
...das funzt aber auch nicht.
Kann mir bitte irgendwer sagen, wie ich Dateien hochlade? Wo sie landen, wie ich sie von dort aufrufen bzw. kopieren/verschieben kann?
Hallo,
der komplette Name zur temporären Datei befindet sich bereits im übergebenen Formularfeld. Daher ist es auch gar nicht notwendig, den Pfad zum temporären Verzeichnis zu kennen. Beispiel:
<html>
<body>
<?php
// auf Fehlerprüfung wird hier verzichtet ;-)
if ($upload=="1") {
for ($i=0; $i<=count(uploadfile); $i++) {
echo "<p>Name zur temporären Datei: ".$uploadfile[$i]."<br>\n";
echo "Original-Name: ".$uploadfile_name[$i]."<br>\n";
echo "Größe: ".$uploadfile_size[$i]."<br>\n";
echo "Dateitype: ".$uploadfile_type[$i]."</p><br><br>\n";
}
unset($upload);
}
?>
<form action="<?php echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="upload" value="1">
Dateiname 1: <input type="file" name="uploadfile[]"><br>
Dateiname 2: <input type="file" name="uploadfile[]"><br>
<input type="submit">
</form>
</body>
</html>
... Jetzt musst du nur noch kopieren.
Danke, aber mir ist schon klar, das die Datei unter einem temporären Namen hochgeladen wird und ich sie dann an ihren eigentlichen Zielort kopieren muss.
Aber wo landet die temporäre Datei? Das muss ich schon wissen sonst kann ich beim kopieren keine Pfadangabe machen. Könnte ja sein dass ich nicht diirekt nach z.B. "html/ein/anderes/verzeichnis/", sondern nach "../html/ein/anderes/verzeichnis" kopieren muss.
OK habe es geschafft!
Die Datei wird hochgeladen und anschließend in ein von mir definiertes Verzeichnis kopiert.
Allerdings habe ich auf die kopierte Datei keinerlei Zugriffsrechte oder sehe ich das falsch?
Da es sich bei meinen Dateien um Textdateien handelt die verändert werden müssen benötige ich doch die Rechte oder?
Wie schon geschrieben, es ist der komplette Dateiname, also einschließlich Pfad.
Ich habe bei mir das Verzeichnis von PHP aus erstellen lassen, damit habe ich auch Schreib- und Lesezugriff auf die Dateien:
if (!file_exists($verzeichnisname))
mkdir($verzeichnisname,0755);
Ah das geht dann? Super danke!
vBulletin v4.1.11, Copyright ©2000-2012, Jelsoft Enterprises Ltd.