php: Server-2-Server-Download einer Datei
php: Server-2-Server-Download einer Datei
Hi
ich hab in meiner SQL einen Grafiklink (http) zu einem fremden Server - statt eines Linkes, möchte ich die Grafik aber lokal und mit neuem Dateinamen (auf meinem Server; im Dateisystem - nicht in der DB) verfügbar haben. Ich möchte die Grafik 1:1 übernehmen - egal welches Format, egal welche größe.
Wie stelle ich das an?
fopen ist mir schon klar - nur danach komm ich net weiter (also runterladen und lokal mit neuen Namen abspeichern). Hab mir bei php.net paar Beispiele angeschaut - aber so richtig schlau werde ich daraus net.
Gruß
ich hab in meiner SQL einen Grafiklink (http) zu einem fremden Server - statt eines Linkes, möchte ich die Grafik aber lokal und mit neuem Dateinamen (auf meinem Server; im Dateisystem - nicht in der DB) verfügbar haben. Ich möchte die Grafik 1:1 übernehmen - egal welches Format, egal welche größe.
Wie stelle ich das an?
fopen ist mir schon klar - nur danach komm ich net weiter (also runterladen und lokal mit neuen Namen abspeichern). Hab mir bei php.net paar Beispiele angeschaut - aber so richtig schlau werde ich daraus net.
Gruß
- Frank1604
- Ehemaliges Teammitglied
- Beiträge: 2106
- Registriert: 07.11.2007 09:25
- Wohnort: Einhausen
- Kontaktdaten:
Re: php: Server-2-Server-Download einer Datei
Das ist relativ einfach, schau dir dazu mal file_get_contents und die Beispiele dazu an.
Gruß, Frank
Meine Meinung steht fest. Bitte verwirrt mich nicht mit Tatsachen!
Meine Meinung steht fest. Bitte verwirrt mich nicht mit Tatsachen!
Re: php: Server-2-Server-Download einer Datei
Hi
file_gets_contents hatte ich auch schon gesehen. Hier irritierte mich das man mal fopen in den Beispielen nutzt und mal nicht. Aber ich sehe gerade - man sollte auch mal zu ende lesen: ganz unten gehts weiter file_put_contents ... das wäre dann die möglichkeit die runtergeladene Dateien wieder abzuspeichern.
Sinngemäss sähe das dann so aus:
richtig? (beim saveto-Pfad die richtigkeit der Pfadangabe mal ignorieren - da kämpfe ich unter Windows immer mit *G*)
Gruß
file_gets_contents hatte ich auch schon gesehen. Hier irritierte mich das man mal fopen in den Beispielen nutzt und mal nicht. Aber ich sehe gerade - man sollte auch mal zu ende lesen: ganz unten gehts weiter file_put_contents ... das wäre dann die möglichkeit die runtergeladene Dateien wieder abzuspeichern.
Sinngemäss sähe das dann so aus:
Code: Alles auswählen
<?php
$file = 'http://www.example.com/grafik.jpg';
// Open the file to get existing content
$current = file_get_contents($file);
$saveto = 'h:\\www\script\bilder\123.jpg';
// Write the contents back to the file
file_put_contents($saveto, $current);
?>
Gruß
Re: php: Server-2-Server-Download einer Datei
Solange du keine php-Dateien richtig vom PHP-Quellcode her downloaden willst, kannst du auch copy() nehmen
Kopiert den Quelltext der Seite. Also kopiert im Prinzip genau den Code, den du auch direkt beim Aufrufen der Seite sehen würdest, wenn du den Quelltext öffnest
Wenn du beispielsweise zip-Dateien downloaden willst, müsste das sogar direkt gehen, wenn nicht, dann vermutlich aber mit einem php-script, dass die zip-datei "öffnet" (also den Code, der hinter einem Zip-Ordner steckt) und diesen dann einfach im Klartext ausgibt. Diesen code kannst du dann mit copy() kopieren lassen und die Datei bei dir auf dem Server einfach mit der Endung .zip speichern 



Re: php: Server-2-Server-Download einer Datei
Hi
mir gehts ja um ne Grafik die ich von Server1 per http runterladen möchte und auf Server2 (wo das script laufen wird) im Filesystem ablegen möchte. Quellcode, Text etc. juckt mich net
Gruß
mir gehts ja um ne Grafik die ich von Server1 per http runterladen möchte und auf Server2 (wo das script laufen wird) im Filesystem ablegen möchte. Quellcode, Text etc. juckt mich net

Gruß
- Frank1604
- Ehemaliges Teammitglied
- Beiträge: 2106
- Registriert: 07.11.2007 09:25
- Wohnort: Einhausen
- Kontaktdaten:
Re: php: Server-2-Server-Download einer Datei
Joar, grob überflogen siehts nicht schlecht aus.Wuppi hat geschrieben:Sinngemäss sähe das dann so aus:richtig? (beim saveto-Pfad die richtigkeit der Pfadangabe mal ignorieren - da kämpfe ich unter Windows immer mit *G*)Code: Alles auswählen
<?php $file = 'http://www.example.com/grafik.jpg'; // Open the file to get existing content $current = file_get_contents($file); $saveto = 'h:\\www\script\bilder\123.jpg'; // Write the contents back to the file file_put_contents($saveto, $current); ?>
So gehts auch..
Code: Alles auswählen
<?php
$getfrom = 'http://www.example.com/grafik.jpg';
$saveto = 'h:\\www\script\bilder\123.jpg';
$erfolg = @file_put_contents($saveto, file_get_contents($getfrom));
echo ($erfolg) ? 'geht' : 'geht net';
?>
Gruß, Frank
Meine Meinung steht fest. Bitte verwirrt mich nicht mit Tatsachen!
Meine Meinung steht fest. Bitte verwirrt mich nicht mit Tatsachen!
Re: php: Server-2-Server-Download einer Datei
Ok, probiers so, dürfte "einfacher" sein:Wuppi hat geschrieben:Hi
mir gehts ja um ne Grafik die ich von Server1 per http runterladen möchte und auf Server2 (wo das script laufen wird) im Filesystem ablegen möchte. Quellcode, Text etc. juckt mich net
Gruß
Code: Alles auswählen
copy("http://.../bild.jpg","relativer/pfad/bild.jpg");

Edit: Um Franks "geht - geht nicht"-Überprüfung noch zu benutzen:
Code: Alles auswählen
$download = copy('http://.../bild.jpg','relativer/pfad/bild.jpg');
echo ($download) ? 'geht' : 'geht nciht';


Re: php: Server-2-Server-Download einer Datei
Hi
das mit copy gefällt mir auch sehr gut
Ich denke mal ich kann da auch variablen einbauen? Das snippet ist ja erst der Anfang - ich lese im Prinzip eine XML-Datei aus (simplexml) und verarbeite die dann - und das ca. 2000mal 
Um an die Bild-URL ranzukommen hab ich den Aufruf: $xml->resultat->bild (das XML ist komplett deutsch; also nicht irritieren *G*)
Der Pfad auf meinem Server wird über eine Konfigdatei verfügbar gemacht: $pfad = "h://www/script/bilder/";
Den neuen Dateinamen erstelle ich aus der ID ausm XML: $xml->resultat->id
Somit müsste mein Code so lauten?
(ggf. müsste ich die Dateiendung von "bild" erfassen und dann statt ".jpg" halt . $erweiterung)
Frage:
echo ($download) ? 'geht' : 'geht nciht';
diesen Aufruf kenn ich gar nicht. Hab den zwar oft im phpbb-Quellcode gesehen (insbesondere das mit ? und : ) , aber verstehen tue ich den nicht. http://php.net/manual/de/function.echo.php hilft mir nicht wirklich weiter
[mir ist schon klar das ich damit etwas prüfe und dann bei true etwas mache und bei false etwas mache - aber das wars auch schon ...]
Gruß
das mit copy gefällt mir auch sehr gut


Um an die Bild-URL ranzukommen hab ich den Aufruf: $xml->resultat->bild (das XML ist komplett deutsch; also nicht irritieren *G*)
Der Pfad auf meinem Server wird über eine Konfigdatei verfügbar gemacht: $pfad = "h://www/script/bilder/";
Den neuen Dateinamen erstelle ich aus der ID ausm XML: $xml->resultat->id
Somit müsste mein Code so lauten?
Code: Alles auswählen
copy($xml->resultat->bild, $pfad . $xml->resultat->id . ".jpg");
Frage:
echo ($download) ? 'geht' : 'geht nciht';
diesen Aufruf kenn ich gar nicht. Hab den zwar oft im phpbb-Quellcode gesehen (insbesondere das mit ? und : ) , aber verstehen tue ich den nicht. http://php.net/manual/de/function.echo.php hilft mir nicht wirklich weiter

Gruß
Re: php: Server-2-Server-Download einer Datei
Code: Alles auswählen
($bedingung) ? wahr : falsch;
Wenn dann die Bedingung in den Klammern ($download) den Wert true hat (es wird bei der verkürzten if-abfrage nur geprüft, ob es true ist - andere Überprüfungen sind nicht möglich!), dann wird das erste nach dem Fragezeichen ausgeführt. Ansonsten das zweite

wenn du jetzt noch ein "echo" dafür setzt, entscheidest du lediglich, ob jetzt die Ausgabe "geht" oder "geht nicht" erfolgt.

Anders kannst du auch sowas machen:
Code: Alles auswählen
($download) ? $bla = 'geht' : $bla = 'geht nicht';
echo $bla;
Code: Alles auswählen
($download) ? echo 'geht' : echo 'geht nicht';


Och achja: Ja, du kannst das ganze natürlich auch mit Variablen machen. Aber ich bin mir nicht sicher, ob dein Webserver erlaubt, dass du einen absoluten Pfad (h:/...) angibst... Sofern du das Script lokal laufen lässt, kann es gut sein, dass es geht, aber online gibt es vermutlich mehr Probleme


- Frank1604
- Ehemaliges Teammitglied
- Beiträge: 2106
- Registriert: 07.11.2007 09:25
- Wohnort: Einhausen
- Kontaktdaten:
Re: php: Server-2-Server-Download einer Datei
Eigentlich handelt es sich nicht um eine If Else, sondern um den Trinitäts-Operator, einen Vergleichs Operator wie z.B. "==" oder "==="
Gruß, Frank
Meine Meinung steht fest. Bitte verwirrt mich nicht mit Tatsachen!
Meine Meinung steht fest. Bitte verwirrt mich nicht mit Tatsachen!