Aangezien ik op mijn werk achter een firewall zit en toch graag wil FTP'en ben ik bezig met een FTP applicatie op mijn eigen apache (1.3.27)/ PHP (4.2.3) server.. Nu zijn er al meerdere mensen die dit gedaan hebben; alleen hebben zijn allen een beperking die ik wil omzeilen. Het is namelijk zo dat alle scripts die ik tot nu toe heb gezien (hotscripts.com/php.net/sourceforge.net) alle bestanden die ge-upload of gedownload worden eerst lokaal opslaan. Dus het uploaden van een bestand gaat van mijn computer naar mijn server die het vervolgens upload naar de FTP; voor downloaden geld het omgekeerde uiteraardt. Dat betekent dat als ik een file van 500 Mb wil downloaden dat ik eerst moet wachten tot mijn server hem binnen heeft (waarbij 'ie overigens al z'n maximale executietijd heeft overtreden) voordat mijn server hem naar mij toe stuurt.
Dit kan natuurlijk beter. Als ik dit:
doe dan krijg ik netjes "The file exists", maar deze stream kan ik niet direct naar de browser sturen? Als ik een readfile gebruik dan krijg ik een download aangeboden met de volgende tekst:
dus dat werkt ook niet helemaal lekker... Iemand een manier om de fopen stream direct aan te bieden aan de downloader; of een manier om de errors hierboven op te lossen?
Dit kan natuurlijk beter. Als ik dit:
PHP:
1
2
3
4
5
6
| $fp = @fopen("ftp://".$_SESSION['doLogin_userName'].":".$_SESSION["doLogin_passWord"]. "@".$_SESSION["doLogin_hostName"].$downloadFile_fileName,"r"); if ($fp) { print"The file exists"; } else { print"The file does not exist"; } |
doe dan krijg ik netjes "The file exists", maar deze stream kan ik niet direct naar de browser sturen? Als ik een readfile gebruik dan krijg ik een download aangeboden met de volgende tekst:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <br />
<b>Warning</b>: stat failed for ftp://Spider.007:******@**.**.***.***/ (errno=2 -
No such file or directory) in <b>d:\http_root\webftp\test.php</b> on line <b>42</b><br />
<br />
<b>Warning</b>: Cannot add header information - headers already sent by (output
started at d:\http_root\webftp\test.php:42) in <b>d:\http_root\webftp\test.php</b> on
line <b>42</b><br />
<br />
<b>Warning</b>: Cannot add header information - headers already sent by (output
started at d:\http_root\webftp\test.php:42) in <b>d:\http_root\webftp\test.php</b> on
line <b>43</b><br />
<br />
<b>Warning</b>: php_hostconnect: connect failed in
<b>d:\http_root\webftp\test.php</b> on line <b>44</b><br />
<br />
<b>Warning</b>: readfile("ftp://...@**.**.***.***/") - Bad file descriptor in
<b>d:\http_root\webftp\test.php</b> on line <b>44</b><br /> |
dus dat werkt ook niet helemaal lekker... Iemand een manier om de fopen stream direct aan te bieden aan de downloader; of een manier om de errors hierboven op te lossen?
---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate