 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
14.05.2005, 14:49
|
#1
|
|
TP-Junior
Registriert seit: Feb 2005
|
Bildupload zu RapidShare + Antwortdaten in Datenbank schreiben
Hi,
ich möchte meinen Mitgliedern die Möglichkeit geben, Bilder/Videos hochzuladen. Diese sollen aber nicht auf meiner Seite sondern bei RapidShare gehosted werden.
Die Bilder können ja über ein Formular, dass ich auf meiner Seite einbaue, hochgeladen werden. Nun kommt das Problem:
Nach dem Hochladen kommt eine Bestätigungsseite mit dem Bildlink und dem Löschlink. Diese Seite möchte ich aber nicht anzeigen, sondern die Links nur auslesen (parsen) und in meine Datei schreiben. Es soll dann nach dem Upload wieder ganz normal meine Seite angezeigt werden. Wie realisiere ich das?
Auf meiner Seite erscheint dann nur der Link zu dem Bild/Video. Sonst nichts. Klickt jemand auf den Link, wird er natürlich auf die RapidShare-Seite geleitet. Davon leben die ja und das ist auch ok.
Ich stehe gerade auf dem Schlauch, wi ich anfagen soll und würde mich über jede Hilfe freuen.
CU
rigo2
Geändert von rigo2 (14.05.2005 um 16:28 Uhr).
|
|
|
14.05.2005, 16:51
|
#2
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
ich glaub kaum, das Dir jemand Tipps geben kann, da keiner weiss wie Du das realisiert hast.
Also : poste das Formular und die Auswertung, dann kann man sich reindenken 
|
|
|
14.05.2005, 17:59
|
#3
|
|
TP-Junior
Registriert seit: Feb 2005
|
Ok. Ich habe jetzt folgendermaßen angefangen:
Ich habe ein Formular, über das man einen Video auf meinen Server laden kann. Das klappt auch, d.h. die Videodatei ist in einem bestimmten Ordner abgelegt.
Mein Problem ist jetzt folgendes:
Wie bekomme ich diese Videodatei von meinem Server auf RapidShare (Formulardaten für RS siehe unten), fange die Antwortseite von RS ab und parse diese nach den Datei- und Löschlinks?
Formular für RS:
Code:
<form method="post" target="_blank" action="http://3rdul.rapidshare.de/cgi-bin/upload.cgi" enctype="multipart/form-data" onsubmit="this.u.value='Uploading...';this.u.disabled=true">
<input type="file" size="48" name="filecontent">
<input type="submit" name="u" value="Upload!">
</form>
Ich hoffe, dass das weiterhilft.
rigo
|
|
|
14.05.2005, 18:38
|
#4
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
genau wie Du gesagt hast.
Du füllst das Formular dynamisch mit den richtigen Werten und sendest es ab, fängst die Rückgabeseite ab und extrahierst die beiden Links.
Was die Technik angeht, bin ich noch nicht sicher, wie man das am elegantesten löst.
|
|
|
14.05.2005, 18:43
|
#5
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
habe gerade ein Script gefunden, mit dem Du die POST-Methode simulieren kannst, ohne ein Formular zu benutzen. Schaus Dir mal an:
PHP-Code:
function PostToHost($host, $path, $referer, $data_to_send) {
$fp = fsockopen($host,80);
printf("Open!\n");
fputs($fp, "POST $path HTTP/1.1\n");
fputs($fp, "Host: $host\n");
fputs($fp, "Referer: $referer\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
fputs($fp, "Content-length: ".strlen($data_to_send)."\n");
fputs($fp, "Connection: close\n\n");
fputs($fp, "$data_to_send\n");
printf("Sent!\n");
while(!feof($fp)) {
$res .= fgets($fp, 128);
}
printf("Done!\n");
fclose($fp);
return $res;
}
$data = "pid=14&poll_vote_number=2";
printf("Go!\n");
$x = PostToHost(
"www.linux.com",
"/polls/index.phtml",
"http://www.linux.com/polls/index.phtml?pid=14",
$data
);
|
|
|
14.05.2005, 18:57
|
#6
|
|
TP-Junior
Registriert seit: Feb 2005
|
Hi Steffen,
danke für das Skript, hier steht sogar noch ein besserer: http://www.php-faq.de/q/q-code-upload.html
Leider bekomme ich folgenden Fehler:
Code:
Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /srv/www/htdocs/dummy.php on line 13
Warning: fsockopen(): unable to connect to http://3rdul.rapidshare.de:80 in /srv/www/htdocs/dummy.php on line 13
errno: 0 errstr: Success 22 0 -22
Also schon beim fsockopen() steift mein Apache aus.
rigo
|
|
|
14.05.2005, 19:07
|
#7
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
poste doch mal Dein Script mit gefüllten vars (von mir aus dummies)
|
|
|
14.05.2005, 19:18
|
#8
|
|
TP-Junior
Registriert seit: Feb 2005
|
Das Skript von der obigen Seite:
PHP-Code:
<?php
// Andreas Bohne-Lang / a.bohne@dkfz.de / 22.10.2001 / GPL
// Ergaenzt: 19.9.2003
function PostToHost($host, $port, $path, $referer, $data_to_send)
{
$dc = 0;
$bo="-----------------------------305242850528394";
$fp = fsockopen($host, $port, $errno, $errstr, 20);
// Hier steigt er aus mit der obigen Fehlermeldung
if (!$fp) {
echo "errno: $errno \n";
echo "errstr: $errstr\n";
return $result;
}
fputs($fp, "POST $path HTTP/1.1\n");
fputs($fp, "Host: $host\n");
fputs($fp, "Referer: $referer\n");
fputs($fp, "User-Agent: Mozilla/4.05C-SGI [en] (X11; I; IRIX 6.5 IP22)\n");
fputs($fp, "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*\n");
fputs($fp, "Accept-Charset: iso-8859-1,*,utf-8\n");
fputs($fp, "Content-type: multipart/form-data; boundary=$bo\n");
foreach($data_to_send as $key=>$val) {
$ds =sprintf("--%s\nContent-Disposition: form-data; name=\"%s\"\n\n%s\n", $bo, $key, $val);
$dc += strlen($ds);
}
$dc += strlen($bo)+3;
fputs($fp, "Content-length: $dc \n");
fputs($fp, "\n");
foreach($data_to_send as $key=>$val) {
$ds =sprintf("--%s\nContent-Disposition: form-data; name=\"%s\"\n\n%s\n", $bo, $key, $val);
fputs($fp, $ds );
}
$ds = "--".$bo."--\n";
fputs($fp, $ds);
while(!feof($fp)) {
$res .= fread($fp, 1);
}
fclose($fp);
return $res;
}
// Fuer eine ASCII-Datei kann man es so machen
// bei bin-Daten ueber fread gehen
$fa = @file("http://www.example.com/00000310.jpg");
// Konkretes Beispiel - Eine Chemie-Datei
$xf="Content-Type: image/jpeg\n\n". implode("", $fa);
$data["disk"] = "on";
$data["file\"; filename=\"hb_123.jpg"] = $xf;
$data["smiles"] = "";
$data["hadd"] = "add";
$data["aroresolver"] = "on";
$data["format"] = "gif";
$data["interlace"] = "1";
$data["width"] = "600";
$data["height"] = "400";
$data["atomcolor"] = "Black";
$data["asymbol"] = "xsymbol";
$data["hcolor"] = "";
$data["csymbol"] = "special";
$data["hsymbol"] = "special";
$data["bondcolor"] = "Black";
$data["bgcolor"] = "White";
$data["border"] = "12";
$data["bonds"] = "8";
$data["wedges"] = "1";
$data["dashes"] = "1";
$data["crop"] = "2";
$data["align"] = "none";
$data["coord"] = "0";
$data["imagemap"] = "none";
$data["headercolor"] = "Black";
$data["header"] = "";
$data["footercolor"] = "Black";
$data["footer"] = "";
$data["commenttype"] = "none";
$data["comment"] = "";
$data["structure"] = "none";
$x = PostToHost("http://3rdul.rapidshare.de", 80, "/cgi-bin/upload.cgi", "http://rapidshare.de/", $data );
// Diesen Teil kann man bestimmt noch optimieren ;-)
$fp = fopen("struktur.gif", "wb");
$tok = 0;
for ($i=20; $i<strlen($x); $i++){
if ((substr($x,$i,1)=="\n") || (substr($x,$i,1)=="\r")) {
$tok++;
if($tok>=3) break;
} else {
$tok=0;
}
}
$i++; $i++;
printf(" %d %d %d \n", $i, strlen($x), strlen($x)-$i);
fwrite($fp, substr($x,$i,strlen($x)-$i));
fclose($fp);
$fp = fopen("struktur.xxx", "wb");
fwrite($fp, $x, strlen($x));
fclose($fp);
?>
|
|
|
14.05.2005, 19:53
|
#9
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
1. lass das http:// weg:
$x = PostToHost("3rdul.rapidshare.de", 80....
2. bei $fa = @file("http://www.example.com/00000310.jpg");
muss natürlich die Datei eingelesen werden, also in Deinem Fall
$fa = @file("hb_123.jpg");
dann sollte es gehen
|
|
|
14.05.2005, 21:25
|
#10
|
|
TP-Junior
Registriert seit: Feb 2005
|
Klappt jetzt. Er rödelt lange(!) rum bis eine Meldung kommt. Wie kann ich denn jetzt die Antwortseite Abfangen und z.B. in einer Datei speichern, um zu kontrollieren ob es auch wirklich geklappt hat?
Bis dann
rigo
|
|
|
14.05.2005, 23:00
|
#11
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
k.A., da müsst ich auch forschen.
Vielleicht hat ja jemand Erfahrung damit.
|
|
|
15.05.2005, 14:52
|
#12
|
|
TP-Veteran
Registriert seit: Dec 2002
Ort: london
|
Am besten das mit einer der php-xml funktionalitäten einfach mal auslesen und den gesamten dom-baum anzeigen lassen. dann den pfad durch das array/die objekte raussuchen, der deinen link enthält und das dann eben benutzen. war das verständlich?
|
|
|
15.05.2005, 16:11
|
#13
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
ich glaub es geht überhaupt um die Frage, wohin die Rückgabe kommt und wie man die abfängt, eben bei obiger Aufrufmethode.
Für die Analyse wäre Deine Lösung denkbar. Da es aber nur um 2 Links geht, die jeweils mit http://rapidshare.de/files/ beginnen (oder s.ä.), kann man das auch leicht mit einer Stringfunktion erledigen.
|
|
|
25.04.2007, 11:04
|
#14
|
|
TP-Senior
Registriert seit: Jun 2005
Ort: Köln
|
Moin moin,
ich hänge gerade an einem ähnlichen Problem. Und zwar soll der User auf meiner Seite ein Video hochladen können, welches dann zusätzlich zu Heywatch gesand werden soll. Der Direkte Upload kommt nicht in Frage, da das Originalvideo ja auf dem Server bleiben soll.
Als Antwort auf das Skript bekomme ich den Fehler 500 (internal Server error).
Vermutlich hängt das mit der Angabe in der Variable $pfad zusammen. Ich habe keine Idee, was ich dort eintragen soll. Ist das nicht ein Wert, der sich auf den Zielserver bezieht?
__________________
The difference between theory and practice is
that in theory there is no
difference between theory and practice
but in practice there is
|
|
|
| |