[php] Problemen met het inlezen van file (op internet)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Ik wil graag een (html/txt/etc..-)bestand inlezen, maar op de een of andere manier lukt het niet =S Foutmeldingen die ik krijg:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Warning: fopen("http://www.robertdewilde.nl/_projects/Frits 
Lutz/Keywords/templatefile.html", "r") - Success in /var/www/html/_projects/Frits 
Lutz/Keywords/procToevoegen.php on line 42

Warning: stat failed for http://www.robertdewilde.nl/_projects/Frits 
Lutz/Keywords/templatefile.html (errno=2 - No such file or directory) 
in /var/www/html/_projects/Frits Lutz/Keywords/procToevoegen.php on line 43

Warning: fread(): supplied argument is not a valid File-Handle resource 
in /var/www/html/_projects/Frits Lutz/Keywords/procToevoegen.php on line 43

Warning: fclose(): supplied argument is not a valid File-Handle resource 
in /var/www/html/_projects/Frits Lutz/Keywords/procToevoegen.php on line 44


Het gaat om dit stukje code..
PHP:
1
2
3
4
5
6
7
8
function LoadFile($fileRef)
{
    $fileHandler    = fopen($fileRef, 'r');
    $fileContent    = fread($fileHandler, filesize($fileRef));
    fclose($fileHandler);
    
    return $fileContent;
}

Aangeroepen dmv:
PHP:
1
2
3
// $_POST['txtLink']  ==> http://www.robertdewilde.nl/_projects/Frits Lutz/Keywords/templatefile.html

$templ['content']   = LoadFile($_POST['txtLink']);

Het bestand bestaat zeker weten wel.. Iemand die kan helpen ?

[ Voor 8% gewijzigd door r0bert op 05-07-2003 16:03 ]


Acties:
  • 0 Henk 'm!

Verwijderd

probeer eens urlencode of een dergelijke functie. Spaties in URL's zijn niet tof.

Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Gaat helaas niet werken.. Had de spatie ook al eens handmatig vervangen door %20 ..

Url Encode levert:
http%3A%2F%2Fwww.robertdewilde.nl%2F_projects%2FFrits+Lutz%2FKeywords%2Ftemplatefile.html

op, maar dat werkt ook niet :'(

[ Voor 7% gewijzigd door r0bert op 05-07-2003 16:15 ]


Acties:
  • 0 Henk 'm!

Verwijderd

filesize($fileRef));
Ik denk niet dat de implementatie van filesize 'slim' genoeg is om te werken op remote-files. Je merkt in de foutmelding dat intern een 'stat' gedaan wordt, en ook deze implementatie zal wel niet slim genoeg zijn. Hoewel je in principe een eind zou moeten komen: modified time, content length headers worden vaak door je webserver wel meegestuurd.

Je hoeft de lengte van de data nog niet te weten voordat je gaat lezen. Je kan net zo lang doorlezen totdat fread geen data meer teruggeeft.

Ps: Niet je complete url encoden

[ Voor 10% gewijzigd door Verwijderd op 05-07-2003 16:18 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Je moet dus while ( !feof ( fileHandler ) ) gebruiken, en toch echt %20 ipv. een spatie gebruiken.

Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Vind dit nu net op php.net:
Fstat
Note: This function will not work on remote files as the file to be examined must be accessible via the servers filesystem.

Filesize
Note: This function will not work on remote files as the file to be examined must be accessible via the servers filesystem.

Heeft dus denk ik idd met Ininitive's reactie te maken

@Cheatah:
PHP:
1
2
3
4
while (!feof($fd))
{
    $fileContent .= fgets($fileHandler, 512); 
}
werkt niet :S

[ Voor 34% gewijzigd door r0bert op 05-07-2003 16:34 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 12:54

Bosmonster

*zucht*

Geen idee welke php-versie je draait, maar als je 4.3+ hebt bestaat de functie die je na probeert te maken al in de vorm van:

file_get_contents()

Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
@Bosmonster schreef op 05 July 2003 @ 16:25:
Geen idee welke php-versie je draait, maar als je 4.3+ hebt bestaat de functie die je na probeert te maken al in de vorm van:

file_get_contents()
Mijn PHP versie ondersteund dat zo te merken iig nog niet ..
Fatal error: Call to undefined function: file_get_contents() in /var/www/html/_projects/Frits Lutz/Keywords/procToevoegen.php on line 45



Ik heb ook al geprobeerd het remote bestand eerst naar mijn eigen server te kopieeren (copy()) maar dat werkt ook al niet :'(

[ Voor 17% gewijzigd door r0bert op 05-07-2003 16:43 ]


Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
r0bert schreef op 05 July 2003 @ 16:22:

@Cheatah:
PHP:
1
2
3
4
while (!feof($fd))
{
    $fileContent .= fgets($fileHandler, 512); 
}
werkt niet :S
$fd is toch ook niks, of zie ik iets over het hoofd?

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
function LoadFile($fileRef) 
{ 
    $fileContent = '';
    $fileHandler    = fopen($fileRef, 'r');
    while(!feof($fileHandler)){
        $fileContent     .= fread($fileHandler, 32); 
    }
    fclose($fileHandler);
    return $fileContent; 
}


zoiets dan...?

Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
dat zou inderdaad al moeten werken :)

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Deze code zou ik niet gebruiken. Probeer het maar eens op een file die niet beschikbaar is. ;)

Rustacean


Acties:
  • 0 Henk 'm!

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 03-09 14:12
Een ranzige oplossing is gebruik maken van de file() functie van php
PHP:
1
2
3
4
function getFileData($url)
{
    return implode('', file($url));
}

Een andere oplossing is om gebruik te maken van de functies uit de curl extensie als die op je server is geladen.

Misschien is het ook handig op http://nl2.php.net/manual/en/features.remote-files.php te bekijken. Daar staat ook een voorbeeld hoe je via http een bestand op kan halen vanaf een andere server.

[ Voor 26% gewijzigd door Rense Klinkenberg op 06-07-2003 13:20 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Manuzhai schreef op 06 July 2003 @ 11:35:
[...]
Deze code zou ik niet gebruiken. Probeer het maar eens op een file die niet beschikbaar is. ;)
weet ik, dan krijg je als het goed is op een gegeven moment een time-out ja... Maar ik ga ook geen 100% waterdichte code aanleveren... dat kun je daarna zelf gewoon weer uitzoeken hè, als je server een keer vastgelopen is ofzo... hehe

})
Pagina: 1