PHP TXT Datei an URL senden?

Blackbenji

Lieutenant
Registriert
Nov. 2009
Beiträge
565
Hallo,

gibt es die Möglichkeit durch Aufrufen einer URL eine Datei an zu hängen?

Situation:
linux server generiert durch Makefiles einige Output Dateien bla_output.php.
Diese Output Datei möchte ich nun an eine URL senden um diese auszuwerten.

In form von http://domain.de/sendfile.php?file=bla_output.php.

Geht sowas überhaupt?
Wenn nicht, gibt es andere Ansetze dafür?
 
ähnlich wie das in formularen gemacht wird müsste man die dateien als POST-Daten einbinden. Bitte mal nach googeln.
 
entweder per post senden oder aber direkt per ftp auf den server laden lassen, das hat den vorteil das abgebrochene uploads fortsetzen kannst und nach erfolgtem upload einfach das skript aufrufen das die daten auswerten soll.
Geht natürlich auch als e-mail, oder einfach nur als TCP / IP Paket mit vorher von dir festgelegtem Protokoll, die möglichkeiten sind nahezu unendlich.
die frage ist: welche mittel stehen dir zur verfügung? Nur php? Dann am besten per FTP Upload oder aber ein HTTP Reuqest senden und die daten von bla_output.php senden (file_get_contents() o.ä.)
 
ja richtig, curl übernimmt das anhängen einer datei in den POST-Header von der commandline aus. Kannte das Teil noch nicht, das macht es natürlich sehr bequem.
 
hallo,

curl sieht sehr gut aus und ist auf den servern auch installiert - perfekt!
die frage ist nur, ob ich den aufruf wirklich richtig durchführe?

rufe ich es im browser auf, funktioniert es.
über den server nicht. er gibt mir aber die file.php als output zurück.

curl --form upload=info.txt --form press=OK http://server/file.php

file.php
<form method="POST" enctype='multipart/form-data' action="file_verarbeiten.php?action=ok">
<input type=file name=upload>
<input type=submit name=press value="OK">
</form>

file_verarbeiten.php

<?php

if(isset($_GET['action'])) {
if ($_GET['action'] == "ok") {
move_uploaded_file($_FILES['upload']['tmp_name'],"/bla.txt");
$datei = implode("<br>",file("/bla.txt"));
echo $datei;
echo "DAtei wurde hochgeladen! </br>";
}
}

?>

das problem: über den browser legt er bla.txt an.
über die console jedoch nichts.
 
Problem an der Sache: Wenn du die Files per POST überträgst dürfen sie die Max Upload Size nicht überschreiten, und du darfst die Scriptlaufzeiten nicht verletzen. Eine Übertragung per FTP, SFTP,... hat solche Grenzen nicht, dafür muss man sich dann was überlegen, um nach erfolgtem Upload eine Auswertung vorzunehmen. Aber man könnte ja erst den Upload per FTP durchführen und dann per cURL sagen "Ich habe dir gerade Datei soundso geschickt, werte sie bitte aus"
 
Vorausgesetzt man hat CURL was leider nicht bei vielen Webspaces geht,mit PHP Boardmitteln ist das aber auch recht einfach (sofern der PHP Server überhaupt selbst Verbindungen nach Extern aufbauen darf). Wenn man file_get_contents() und stream_context_create() verwendet, kann man Problemlos einen Post machen und z.b. auch als Formulartyp ein File einschleusen.
 
a) die datei ist unter 2 mb, es geht nur um textfiles in denen infos stehen.
b) der php server ist lokal - also könnte notfalls die php ini anpassen und die max size verändern.

das problem wäre nicht. nur der aufruf über console mag noch nicht :/
 
Habe ich das jetzt durch den letzten Post richtig verstanden, Du versuchst Lokal die Daten hin und her zu schubsen und nicht von Server 1 zu Server 2?!

Musst Du denn immer einen Datensatz (die Datei) versenden, oder können auch Teile davon versendet werden? Ich versuche das mal an einem Beispiel zu erläutern, was wir hier in der Firma haben. Wenn eine Versicherung bei uns abgeschlossen wird (auf unserer Internetseite), wird der Datensatz von einer Versicherung via cURL an den Versicherer gesendet.

Mit einem anderen Versicherer läuft es anders ab, da wird 24 Std. gesammelt und anschließend ein etwas größeres Paket versandt :)

Wenn Du also immer kleine Schnipsel hast, würde ich diese via cURL versenden.
Gruß, Domi
 
musst du im curl-aufruf nicht auf file_verarbeiten.php verweisen?
 
Habe ich das jetzt durch den letzten Post richtig verstanden, Du versuchst Lokal die Daten hin und her zu schubsen und nicht von Server 1 zu Server 2?!

nein, von server 1 (linux) zu rechner 2 (windows, xampp).

musst du im curl-aufruf nicht auf file_verarbeiten.php verweisen?

file_vearbeiten verarbeitet ja die datei, curl soll ja aber doch das formular per POST ausfüllen, oder?
 
Ich habe so etwas (Daten von Server 1 zu Server 2) via XML realisiert... Vielleicht ist das hier ja auch noch ein Ansatz für die Übertragung :)
 
Blackbenji schrieb:
file_vearbeiten verarbeitet ja die datei, curl soll ja aber doch das formular per POST ausfüllen, oder?

Nein, Curl schickt bereits ein "ausgefülltes Formular" hin. Das sieht im HTTP Request so aus, dass im Header der POST-Content einfach vor dem Content eingefügt wird.

Wichtig bei der Verarbeitung: Vor dem ersten Zugriff auf die POST-Datei-Daten darf kein HTML Output stehen, da sonst der PHP Interpreter den Header bereits überlesen hat. Dein file_verarbeiten.php scheint ja zu funktionieren, daher ist das ok. Verweise beim Curl einfach direkt darauf. Wenn es dann nicht klappt kommt das "action" per GET-Daten nicht an. Ggf. dann einfach per ?action=OK an die URL anhängen.
 
Zurück
Oben