[PHP] File download vanaf commandline

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • djack
  • Registratie: September 2002
  • Laatst online: 11-11-2024
Even de bedoeling schetsen.
Ik wil vanaf linux clients files downloaden die op een webserver staan.
Op de linux client draait er een cron job die om de X aantal tijd via curl een web pagina moet checken.
Indien er voor de client dan files staan deze downloaden.
Op voorhand weet de client niet welke files er eventueel klaar staan. Deze info zal gegenereerd worden op het moment dat hij naar een pagina gaat (download.php?hostname=clientname&action=check)
Het leeg lezen van wat er klaar staat is geen probleem.

Waar ik niet uit raak (en dus wat hulp voor nodig heb) is hoe ik deze dan ineens kan downloaden.
Ben al even aan het goooogelen en heb al wat gegot maar ... ;-(

Kan er iemand hier even zijn licht op werpen zou me weeral een stukje verder helpen.

Because Great minds Think alike


Acties:
  • 0 Henk 'm!

  • Pyrus
  • Registratie: November 2001
  • Laatst online: 21:57

Pyrus

Hardknock life

Je hebt dus een lijst met urls naar bestanden die je wil downloaden?
Ik zou zeggen gewoon de bestanden stuk voor stuk aannemen met php alsof ze een webpagina zijn en met de juiste headers naar je filesystem wegschrijven?
Of ligt in dat wegschrijven juist het probleem?

LinkedIn


Acties:
  • 0 Henk 'm!

  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 21-08 15:56

webfreakz.nl

el-nul-zet-é-er

Wget? Ja is linux command line, maar hij is ook geport naar Windows command line :P

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Je kunt met fopen() ook remote-files benaderen ;) Mits de fopen-wrappers geactiveerd zijn tenminste

Acties:
  • 0 Henk 'm!

  • djack
  • Registratie: September 2002
  • Laatst online: 11-11-2024
elk systeem heeft zijn eigen url.

download.php?shop=systemid&action=download

of zo iets, op deze pagina gebeurt een query naar de db hier zal een lijst met files uit voortvloeien.
deze lijst plaats in in een loepje en in dit loepje moet de download van de desbetreffende files gebeuren.

Alles lukt perfect tot op het moment dat ik wil downloaden.
Ik heb al naar een paar scripts bekeken maar als ik deze bekijk en ze probeer onder windows krijg ik een mooie download maar onder linux laat hij de file content zien.

Because Great minds Think alike


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Ik heb al naar een paar scripts bekeken maar als ik deze bekijk en ze probeer onder windows krijg ik een mooie download maar onder linux laat hij de file content zien.
Kun je de relevante code uit zo'n script misschien hier neerzetten, of online als het veel is?
Want ik weet nu niet zeker of ik je vraag goed snap, in je eerste post leek het er nl. op dat je op de server met php bestanden wilde gaan downloaden (vanaf een andere server), maar nu lijkt het alsof je gewoon met een browser wat wil downloaden? In het laatste geval moet je zorgen dat je de juiste headers meestuurt. Daar staan wel voorbeelden van in de PHP-manual.

[ Voor 152% gewijzigd door user109731 op 12-05-2006 22:34 ]


Acties:
  • 0 Henk 'm!

  • djack
  • Registratie: September 2002
  • Laatst online: 11-11-2024
Ik wil files downloaden die op een webserver staan.
Dit wil ik doen door een curl = url....

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?
if ($_GET['hostname'] !=""){
        if ($_GET['action'] == "download"){
        $query="Select filename from jobs where hostname = '$hostname' and status = 'pending')"
        $result = mysql_query($result);
        while ($row = mysql_fetch_array($result)) {
                $file=row[0];
                $name="$file";
                $path = "./rfc_files/$name";
                $size = filesize($path);
                header("Content-Type: download-application/unknown; name=$name");
                header("Content-Length: $size");
                header("Content-Disposition: attachment; filename=$name");
        }
        }
        elseif ($_GET['action'] == "downloaded"){
                $hostname = $_GET['hostname'];
                $status = $_GET['action'];
                $filename = $_GET['filename'];
                UPDATE ...

        }
        elseif ($_GET['action'] == "installed"){
            $hostname = $_GET['hostname'];
                 $status = $_GET['action'];
                $filename = $_GET['filename'];
                UPDATE ...
}
        }
?>


de code is bla bla maar het gaat mij vooral over de download ....
als ik deze url via IE laat gaan dan krijg ik een download windowke ...

[ Voor 17% gewijzigd door djack op 12-05-2006 22:37 ]

Because Great minds Think alike


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Als je meerdere files heb krijg je in dit geval 1 groot bestand denk ik. Oplossing is misschien eerst zippen oid, of meegeven welk id je wilt.

Stel dat het om 1 bestand gaat, volgens mij is download-application/unknown geen geldig mimetype. Vervang die regel eens door deze:
PHP:
1
header("Content-Type: application/force-download");

[ Voor 8% gewijzigd door user109731 op 12-05-2006 23:22 ]


Acties:
  • 0 Henk 'm!

  • djack
  • Registratie: September 2002
  • Laatst online: 11-11-2024
mja onder windows doet dat het ook maar een curl naar het webadres geeft niets ...:-(

Because Great minds Think alike


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

code:
1
2
3
4
5
6
7
8
9
 while ($row = mysql_fetch_array($result)) {
                $file=row[0];
                $name="$file";
                $path = "./rfc_files/$name";
                $size = filesize($path);
                header("Content-Type: download-application/unknown; name=$name");
                header("Content-Length: $size");
                header("Content-Disposition: attachment; filename=$name");
        }

Je stelt nu alleen wat headers in maar je vergeet de file zelf door te geven ;)
(daarnaast gaat het mis als je meer dan 1 file wilt downloaden, maar probeer eerst eens of het lukt om 1 file te downloaden).

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • djack
  • Registratie: September 2002
  • Laatst online: 11-11-2024
Curl geeft echt niets weer :-(
Met andere woorden hij download de file niet ..

Onder Firefox en IE krijg ik een save assssss windowke ...

Because Great minds Think alike

Pagina: 1