• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

mehrere Dateien kopieren

andynail

Mitglied
Hallo zusammen

ich verwende server2go und das soll so auch bei dieser Seite so bleiben. Und jetzt will ich Dateien in ein Verzeichnis der Seite kopieren.

Also erstelle ich dafür folgende Zeilen:
PHP:
$Datei = $_POST['Dateien'];
$Dateien = explode(";",$Datei);
for ($i = 0; $i < count($Dateien)-1; $i++)
{
$Verzeichnis = strrchr("\", Dateien[$i];
$Datei = chunk_split($Verzeichnis+1, strlen(Dateien[$i]);
!copy($Daeien[$i], $_SERVER['DOCUMENT_ROOT']."/Dateien/".$Datei);
}

und übergeben werden die Daten per jjquery:
Code:
$.post("Copy.php", "Dateien:" + Dateien);

und jede Datei ist durch ein ; getrennt.

Doch nix passiert. Warum nicht?

Danke Gruß Andreas
 
Du solltest schon am Hightlighting deines Quellcodes hier im Forum erkennen, dass Du eine ) vergessen hast.
 
Hallo threadi

und vielen Dank dafür! Und nun sieht der Code so aus, da ich das mit dem Backslash auch geändert habe:
PHP:
$Datei = $_POST['Dateien'];
$Dateien = explode(";",$Datei);
for ($i = 0; $i < count($Dateien); $i++)
{
$Verzeichnis = strrchr('\', Dateien[$i]);
$Datei = chunk_split($Verzeichnis, strlen(Dateien[$i]));
!copy($Daeien[$i], $_SERVER['DOCUMENT_ROOT']."/Dateien/".$Datei);
}

Doch änderst sich nichts. Zugegeben das wenn ich diese Zeilen einmal in eine Datei kopiere die Angezeigt wird, dann ein seltsamer fehler mommt das was mit den folgenden Zeilen nicht stimmen würde. Was wohl ein Problem mit den Klammern sein könnte. Doch will ich einfach nicht dahinter komen und würde mich somit um Hilfe sehr freuen.

Danke Gruß Andreas
 
Hier

PHP:
strrchr('\', Dateien[$i])

escapedst Du ein wichtiges Zeichen mit dem \. Das sollte eher so aussehen:

PHP:
strrchr('\\', Dateien[$i])

Und du solltest eigentlich auch dringend das PHP-Error-Reporting aktivieren. Dann würdest Du eine Fehlermeldung sehen und diese auch selbst beheben können.
 
Hallo thredi

und vielen Dank. Doch wenn ich es so in eine anzeigende Datei schreibe erhalte ich eine Fehlermeldung. Mag ja sein das da ein Unterschied zu den reinen php Dateien besteht. Aber schreibe ich es so wie ich es zeigte, erhalte ich nach wie vor eine Fehlermeldung bezüglich einer nachfolgenden Zeile. Und das Kopieren funktioniert noch immer nicht. Ich wüsste auch nicht wie ich mir php Fehlermeldungen anzeigen lassen kann.

Ich würde mch über Hilfe hier sehr freuen, dass der Code funktioniert, da dies eine geniale Sache wäre. Ich hoffe das dieser zum laufen kommt, was ich ja nicht hinbekommen will.

Also möchte ich mich dafür auch schon bedanken.

Gruß Andreas
 
Zuletzt bearbeitet:
Wie jetzt? Du siehst eine Fehlermeldung, weißt aber nicht wie Du PHP Fehlermeldungen anzeigen lässt? Was denn nun? Zeig doch mal das was Du ausgegeben bekommst, dann könnte man dir vlt. auch Tipps geben.
 
hallo threadi

du schriebst ja von einem PHP-Error-Reporting, obwohl ich ja schon davon geschrieben hatte das mir eine Fehlermeldung in einer anzeigenden Datei ausgegeben wird wenn ich die Zeilen dort reinkopiere.

Oh ja ich hatte bisher hier immer die copy Zeile draußen gelassen und da wird angezeigt das da ein syntax Error drin sein soll: "syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING" Und wenn ich die Zeile draußen lasse wird ein Error angezeigt in einer Zeile die aber ansonsten funktioniert mit der Meldung unexpected T_String.

Also was ist jetzt mit der Copy Zeile?

Danke Gruß Andreas
 
Zuletzt bearbeitet:
Und warum kastrierst du die arme Fehlermeldung?? Da steht betimmt mehr, als du hier geschrieben hast. Und deinen aktuellen Quellcode kennt auch niemand.
 
Hallo bdt600

die Fehlermeldung mit der copy Zeile lautet: "syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in " und wenn diese Zeile draußen ist: "syntax error, unexpected T_STRING in"

Und der Code ist doch bekannt. Wenn er so in die funktionierende Datei kopiert wird lauten die Zeilen dort so:
PHP:
$Name = urldecode($_GET["Namen"]);
$Namen = explode(";",$Name);
$ID = $_GET["IDs"];
$IDs = explode(";",$ID);
$Datei = $_POST['Dateien'];
$Dateien = explode(";",$Datei);
for ($i = 0; $i < count($Dateien); $i++)
{
$Verzeichnis = strrchr("\", Dateien[$i]);
$Datei = chunk_split($Verzeichnis, strlen(Dateien[$i]));
!copy($Daeien[$i], $_SERVER['DOCUMENT_ROOT'].'/Dateien/'.$Datei);
}
for ($i = 0; $i < count($Namen)-1; $i++)
{
echo "<tr style='height:50px'><td style='width:50px'><img name='Auswahl' id='Auswahl'></img></td><td><a ID='".$IDs[$i]."'>".$Namen[$i]."</a></td></tr>";
}

Danke Gruß Andreas
 
Welche Zeile? Nochmal: bitte nenne die gesamte Fehlermeldung, da steht auch eine Zeilennummer. Und wie man hier am Syntaxhighlighting sieht, gibt es da natürlich immernoch einen Fehler. Und das dürfte am fehlerhaften Escapen in strrchr() liegen.
 
Hallo threadi

ich beschrieb doch schonmal die Geschehnisse:

Wenn ich \\ schreibe erhalte ich die Fehlermeldung: "syntax error, unexpected '[' in"

Wenn ich dies lasse wird in der Copy Zeile ein syntax error wie bereits beschrieben angezeigt.

Und lasse ich die Copy Zeile draußen soll wie bereits beschrieben der Fehler in der nachfolgenden, aber normalerweise funktionierenden, Zeile ein Fehler drin sein.

Es sieht wohl so aus als ob man nicht nach dem Zeichen suchen kann. Oder gibt es Zeichencodes unter php und dieser soll dann für ein "\ " stehen?

Danke Gruß Andreas
 
Und ich schrieb auch schonmal: bitte nenne die genaue Fehlermeldung. So wie Du das schreibst kann man nur erahnen was als Fehlermeldung kam.

Btw. sehe ich in deinem Quellcode auch noch weitere Fehler: ein falsch geschriebene Variable, ein fehlendes $ bei einer Variable ... Du musst lernen die Fehlermeldungen die dir angezeigt werden zu lesen und zu erkennen was dort falsch ist. Das Syntaxhighlighting hier im Forum zeigt es (wie schon oft erwähnt) auch ganz gut.
 
Hallo threadi

also sorry, denn wenn ich jetzt in die Zeile '\\' eingebe erscheint die Fehlermeldung: "syntax error, unexpected '[' in" in dieser Zeile. Und ich denke doch alle Zeilen stets genannt zu haben, da ich ja keine <Zeilennummern nennen kann.

Danke Gruß Andreas
 
Die Zeilennummer steht in der Fehlermeldung von PHP - die bräuchte man der Vollständigkeit halber. Du könntest ja auch eine andere Zeile meinen als die Fehlermeldung, woher sollen wir das erkennen können?

Aber mal ein kleiner Anstoß:
Das ist falsch:
PHP:
$Verzeichnis = strrchr("\", Dateien[$i]);
$Datei = chunk_split($Verzeichnis, strlen(Dateien[$i]));

Richtig wäre (rein von der Schreibweise):
PHP:
$Verzeichnis = strrchr("\\", $Dateien[$i]);
$Datei = chunk_split($Verzeichnis, strlen($Dateien[$i]));

Fällt dir jetzt was auf?
 
Hallo threadi

ok vielen Dank. Die Zeichen habe ich jetzt eingefügt mit dem Erfolg das keine Fehlermeldungen mehr angezeigt werden. Kopiere ich diese Zeilen jetzt in die php Datei ändert sich aber nichts an der Situation das nichts kopiert werden will.

Danke Gruß Andreas
 
Ich sehe ja auch weitere Schreibfehler noch, allein schon bei der copy-Funktion ...

Dann ist natürlich auch noch die Frage, ob Du das was Du kopieren willst überhaupt kopieren kannst und wenn ja, ob Du diese in das Ziel überhaupt kopieren darfst. Da Du die Pfade nicht nennst, müsstest Du selbst kontrollieren, ob Du die nötigen Zugriffsrechte hast. Aber erstmal die Schreibfehler korrigieren ...
 
Hallo threadi

Die Dateien sind txt Dateien die im users\Benutzer\Documents\ Verzeichnissen drinstehen und das >Ziel lautet entweder server2go\htdocs\Dateien oder server2go\htdocs\Startseite\Dateien

Die Idee dahinter ist diese dann auch auf dem usb Stick mit der Webseite zu speichern. Und ob ich dorthin kopieren kann weis ich noch nicht. Wäre also eine tolle Sache wenn das jetzt funktionieren würde.

Danke Gruß Andreas
 
Dann wird das was Du vor hast niemals funktionieren. Du hast offenbar den Sinn und Zweck von PHP noch nicht verstanden. PHP läuft serverseitig und hat KEINEN Zugriff auf deinen lokalen Computer. Somit kannst Du auch nicht Dateien von deiner Platte mit so einem Script auf einen entfernten Server kopieren.

Schmeiß also das ganze Script weg und such dir eine Möglichkeit Dateien auf einen Server hochzuladen. Die wichtigten Stichwörter dafür aus PHP-Sicht sind $_FILES[] sowie aus HTML-Sicht input-file.
 
Hallo threadi

ja das is wohl so. Ich dachte halt dies schon mal gesehen zu haben und damit Dateien kopiert zu haben. Ich wollte dies jetzt so anwenden und wohl ohne Erfolg. Und vor dem Thema Dateien hochladen stand ich auch schon mal, doch passt das nicht zu meiner Situation auf der Seite. Also ist mien Vorhaben hiermit beendet. Schade!

Vielen Dank für Deine Bemühungen.

Danke Gruß Andreas
 
Zurück
Oben