yanmai
Goto Top

C-Sharp Daten von PHP lokal speichern

Hallo ihr Administratoren,
ich möchte einen ZIP von einer PHP Datei lokl speichern. Mein PHP Script:

header("Cache-Control: public");  
		header("Content-Description: File Transfer");  
		header("Content-Disposition: attachment; filename=$targetPath");  
		header("Content-Type: application/zip");  
		header("Content-Transfer-Encoding: binary");  

		readFile($targetPath);
			$file_content =  file_get_contents($targetPath);
			echo $file_content;
				exit();

mein C# Script:

// Formuliert Serveranfrage
            var client = new RestClient("https://....com/test/");  
            var request = new RestRequest("server.php", Method.POST);  
            request.AddParameter("ac", "jdl");  
            request.AddParameter("id", user_id.ToString());  
            request.AddParameter("filename", Path.ChangeExtension(Daten, ".zip"));  
            byte response = client.DownloadData(request);

            // Speichert empfangene Serverdaten
            File.WriteAllBytes(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Server.zip"), response);  
            Directory.CreateDirectory(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Testorder Server"));  
            ZipFile.ExtractToDirectory(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Server.zip"), Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Testorder Server"));  

An sich funktioniert der Download, aber die ZIP Datei ist auf dem Anwenderpc größer als auf dem Server (auch wenn ich mir den richtig runterlade, ist der so groß wie auf dem Server), was ich nicht verstehe. Und in der letzten Zeile tritt ein Fehler auf, dass er nicht richtig exportiert werden kann. Wo ist der Fehler?

Content-ID: 342801

Url: https://administrator.de/contentid/342801

Ausgedruckt am: 01.11.2024 um 02:11 Uhr

133417
133417 07.07.2017 aktualisiert um 22:29:58 Uhr
Goto Top
readFile($targetPath); 
echo $file_content; 
Doppelt gemoppelt ...
Erst die ZIP mit readfile ausgeben und dann nochmal das gleiche per echo?? Ist zwar Freitag aber da brauchst du dich nicht wirklich wundern wenn deine Zips größer werden als sie es tatsächlich sind ;-P, war wohl zu heiß heute face-wink.


Btw. die Variable $targetPath gibt's in deinem oben geliststen Code nicht.

Gruß
Yanmai
Yanmai 07.07.2017 um 22:53:36 Uhr
Goto Top
Vielen Dank für die Antwort, ja, im Kopf war ich noch im Sommerurlaub. Jetzt habe ich die PHP Datei so geändert, dass der ZIP nur einmal returned wird. Jetzt gibt es nur noch minimale Unterschiede in der Anzahl der Bytes (+-200). Kann man das so gelten lassen oder wie?
In der letzten Zeile des C#-Quelltextes bekomme ich diesen Fehler: Die am Ende des zentralen Verzeichnisses erwarteten Einträge entsprechen nicht der Anzahl der Einträge im zentralen Verzeichnis. Wo ist hier der Fehler?
Yanmai
Yanmai 10.07.2017 aktualisiert um 21:35:43 Uhr
Goto Top
Könnt ihr mir bitte helfen?