php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.11.2004, 23:51  
Gast
 
Beiträge: n/a
Standard Filedownload anhand von URL

Hallo zusammen..
ich bin dabei ein Script zu schreiben, welches eine Seite nach Links durchsucht. Klappt alles wunderbar. Ich will jetzt die auf der Seite vorkommenden Links, die zu einer datei ( Bild Datei ) führen herunterladen.
Ich habe das ganze mit der PHP funktion copy() versucht. allerdings will da snicht so ganz funktionieren. Hat das jemand von euch schon mal gemacht.. Wäre für jede Hilfe sehr dankbar !!

Falls noch Fragen sind, nur her damit..

schonmal Danke

Snowchain
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.11.2004, 00:10  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Filedownload anhand von URL

Zitat:
Zitat von snowchain
Ich will jetzt die auf der Seite vorkommenden Links, die zu einer datei ( Bild Datei ) führen herunterladen.
du willst die links herunterladen? wohl eher die dateien.

Zitat:
Zitat von snowchain
allerdings will da snicht so ganz funktionieren.
ich finde, dass diese ausführliche fehler- bzw. problembeschreibung einen 'award' bekommen sollte.

Zitat:
Zitat von snowchain
Wäre für jede Hilfe sehr dankbar!!
klar helfen wir dir, allerdings musst du uns schon sagen, was du bisher so geleistet hast.
welche alternativen zu copy() hast du verwende?
wie hast du dein script derzeit programmiert? also .. was machst du eigentlich bis jetzt?


in der derzeitigen form ist das hier keine profi-frage. sorry, aber das ist einfach so.

Der Beitrag wurde verschoben, wegen...
... unzureichender Fragestellung.
... Postings im falschen Forum.

Bemerkung:
Die gestellte Frage entspricht nicht dem Wissensstand eines Profis. Dazu: http://www.phpfriend.de/forum/viewtopic.php?t=21431

moved to PHP - Anfänger
imported_Ben ist offline  
Alt 30.11.2004, 09:30  
Gast
 
Beiträge: n/a
Standard na herzlichen glühstrumpf

Also suuper das ich so schnell ne antwort bekomme!!
Nur die qualität der Antwort is ja ma grad fürn A..** ..

Ich gehe davon aus, das ein "Profi" ein ähnliches Problem schon einmal hatte und dieses auch gelöst!!

Also nochmal ( und ich glaube kein Anfänger der Welt kann dies je beantworten ).

Ich habe eine function aus dem PHP Kochbuch von O'Reilly die sich "pc_link_extractor" nennt.
Code:
function pc_link_extractor ($s) {
 	
	$a = array ();
	if (preg_match_all('/<a\s+.*?href=[\"\']?([^\"\' >]*)[\"\']?[^>]*>(.*?)<\/a>/i', $s,$matches, PREG_SET_ORDER)) {
	    foreach ($matches as $match) {
			array_push($a, array($match[1], $match[2]));
		}//ENDE foreach..
	}//ENDE if.. 
 	return $a;
 }//ENDE function..
Diese function liest aus einem String alle
Code:
<a href="">
aus.

Funktioniert wunderbar.

Den String, den ich übergebe enthällt eine komplette HTML Seite. Dazu diese Funktion, die Zeile für Zeile einer HTML Seite in eine Variable packt.

Code:
function SeiteAuslesen ($url) {
 
 	$myFile = @fopen($url, "r");
	
	while(!feof($myFile)){
		$myLine.=fgets($myFile, 1255);
		
	} // while
	//echo $myLine;
	fclose($myFile);
	return $myLine;
 }//ENDE function..
Funktioniert auch wunderbar..

Jetzt habe ich alle Links, die auf der von mir angegebenen Seite ( URL wird übergeben ) enhalten sind.
Jetzt habe ich noch ein Kriterium, das bestimmte Links, die ich nicht benötige aus dem String entfernt.

Was ich nun gerne von euch wissen würde, wie mache ich einen "Filetransfer" eines Links ( zu einer Datei natürlich ) von einem Fremden Server ( URL vorhanden ) zu einem von mir angegebenen Zielort --> URL, oder wegen mir in das aktuelle Verzeichnis, in dem sich das Script befindet.

mein Versuch sieht so aus:


Code:
foreach ($b as $ausgabe) {
		if (substr($ausgabe, 0, 3) == substr($urlparts[4], 0, 3)) {
		    echo $pfadname.$ausgabe."

";
			
			copy("URL des Bildes ( der Datei )", "Zielpfad auf ausführendem Rechner ( mit funktion getcwd() ermittelt");

		}//ENDE if..
	}//ENDE foreach..
Fehlermeldung:

Warning: copy(C:\Programme\Apache Group\Apache2\htdocs\auslesen\591): failed to open stream: Permission denied in C:\Programme\Apache Group\Apache2\htdocs\auslesen\extract.php on line 63


Rechte habe ich vergeben --> 0777.

Vielen Dank nochmal für die super Hilfe..
 
Alt 30.11.2004, 09:35  
Gast
 
Beiträge: n/a
Standard

du kannst auf windows gar keine rechte vergeben .. zudem wie man an deinem warning sieht er versuch auslesen/591 zu lesen .. was auch immer das sein soll .. nen kompletten
ordner .. dann fehlt der / .. wenn's ne datei sein soll fehlt die endung .. du bist dran.
 
Alt 30.11.2004, 09:42  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: na herzlichen glühstrumpf

Zitat:
Zitat von snowchain
Also suuper das ich so schnell ne antwort bekomme!!
das ist in diesem forum meistens so.
Zitat:
Zitat von snowchain
Nur die qualität der Antwort is ja ma grad fürn A..** ..
die qualität der antwort ist deiner frage angemessen.

Zitat:
Zitat von snowchain
Ich gehe davon aus, das ein "Profi" ein ähnliches Problem schon einmal hatte und dieses auch gelöst!
gut, dass du den link in meinem posting zu den 'postingregeln' des profiforums gefolgt bist.

im profiforum fragen nur die profis, keine anfänger. klar?

Zitat:
Zitat von snowchain
und ich glaube kein Anfänger der Welt kann dies je beantworten
du denkst also, dass im anfängerforum nur anfänger antworten?
wo ist da die logik? genau. die logik fehlt.

wenn du nur ein script willst und nicht gewillt bist dich selbst mit dem code zu befassen, dann könen wir dir hier nicht helfen.

stef hat dich schon auf einen portentiellen fehler hingewiesen.
also .. zeig einsatz ..
imported_Ben ist offline  
Alt 30.11.2004, 09:57  
Gast
 
Beiträge: n/a
Standard

Zur Aufklärung. Ich bin lange kein Anfänger mehr.

zweitens arbeite ich nicht auf einer Windows maschiene sondern auf einem Unix Rechner ( sorry, pfadangabe war auf meinem Rechner lokal )

Und zu deiner Vermutung, das ich denke, dass nur Anfänger im Anfängerforum antworten.
Wie du sagst, das wäre totaler Schwachsinn. Aber ich gehe mal fest davon aus, das Anfänger keine solchen Probleme haben.

Anstatt hier ständig klug zu scheissen könntest du mir doch einfach mal einen Tipp geben, mit was ich das ganze noch probieren könnte.
Also eine andere Funktion als copy. Habe auch schon einmal probiert das Bild ( also die zu kopierenede Datei ) binär auszulesen und in eine neu erstellte Datei zu schreiben.

Das sah dann so aus -->

Code:
$handle = fopen("URL angabe", "rb");
$filegroesse = filesize("URL angabe");
$Bildinhalt = fread($handle, $filegroesse);
echo $Bildinhalt."
";
Allerdings meldete er da nur, dass das File, zum auslesen der Filesize sich auf dem lokalen Rechner befindet.

Noch eine produktive Idee ????
 
Alt 30.11.2004, 09:59  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von snowchain
Anstatt hier ständig klug zu scheissen könntest du mir doch einfach mal einen Tipp geben
ich lass mich aber nicht anmachen, nur weil ich meiner moderatorenaufgabe nachgehe.
imported_Ben ist offline  
Alt 02.12.2004, 14:34  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von snowchain
Zur Aufklärung. Ich bin lange kein Anfänger mehr.
ich kenne 3 gründe die dafür sprechen:
-du weist nicht, dass filesize() nur local funktioiert
-du versuchst eine datei mir copy() herunter zu laden
-du schreibst die funktionsnamen auf deutsch (nicht flasch aber keiner der es drauf hat tut das)

wie auch immer, nimm einfach file_get_contents() um eine datei herunter zu laden.
wenn du unbedingt die größe der datei wissen willst, musst du dich wohl mit dem http protokoll auseinander setzen. aber da du "lange kein anfänger" mehr bist, brauch ich dir das ja nicht zu erklären
 
Alt 02.12.2004, 14:57  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Snake
wie auch immer, nimm einfach file_get_contents() um eine datei herunter zu laden


ähem. holt man sich damit nicht nur den inhalt der datei?
imported_Ben ist offline  
Alt 02.12.2004, 15:19  
Gast
 
Beiträge: n/a
Standard

fein.. habs jetzt schon anders hinbekommen..
Aber Ben..
nur als Hinweis.. was will ich denn anderes als den Inhalt der Datei.. ist das nicht die Datei.. *denk* ahhh.. .. gar nich dumm, was

Für alle, hab das ganze jetzt mit
Code:
fwrite($handle, $File)
gemacht..
Ich lese zuerst die Datei aus, schreibe den Inhalt in die Variable $File..
und kopiere das ganze dann in eine von mir erstellte Datei.
Code:
$handle = fopen($filename, "w+");
so.. nochmal Danke für die Hilfe..

achja.. Wenn ich es mal so nötig hab, um mir anzuhören, das ich funktionsnamen in Englisch formulieren muss, nur um zu zeigen das ich de hammer programmierer bin, dann schau ich hier nochmal vorbei...

Herzlichen Glückwunsch
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Filedownload Schiedsrichter PHP Tipps 2004 7 15.10.2004 11:50

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bilder mit url angabe runterladen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.