Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: FTP - pobieranie pliku
Forum PHP.pl > Forum > PHP
grohu
czy ktos uzywal funkcji php obslugujacych
protokol ftp questionmark.gif?
nie moge pobrac pliku z servera na dysk lokalny,
mimo ze robie wedlug opisu funckji w manualu...

jak ktos wie jak to zrobic to prosze o pomoc.
adwol
Cytat
czy ktos uzywal funkcji php obslugujacych
protokol ftp questionmark.gif?
nie moge pobrac pliku z servera na dysk lokalny,
mimo ze robie wedlug opisu funckji w manualu...

jak ktos wie jak to zrobic to prosze o pomoc.

Pokaż kawałek kodu, bo tak to trzebaby być wróżką żeby odgadnąć. winksmiley.jpg
grohu
napisalem taki skrypt.

na serwerze lokalnym jako/tako dziala,ale w necie sa bledy i nie mozna sciagnac pliku z serwera ftp

[php:1:f3920313a2]<?php

$ftp_server="adres_servera";
$ftp_user="uzytkownik";
$ftp_pass="haslo";

$remote_file="/home/szparag/netware.zip";
$file_local_name=basename($remote_file);

$temp="temp/temp";


$conn_id = ftp_connect($ftp_server);

$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);

$ret = ftp_nb_get($conn_id,$temp,$remote_file, FTP_BINARY);
while ($ret == FTP_MOREDATA)
{
$ret = ftp_nb_continue ($conn_id);
}

if ($ret != FTP_FINISHED)
{
echo "There was an error downloading the file...";
exit(1);
}
else
{

header("Content-disposition: attachment; filename=$file_local_name");

if (file_exists($temp)) unlink($temp);

$fp=fopen($temp,"r");
$contents=fread($fp,filesize($temp));
echo "$contents";
unlink($temp);
}


?>[/php:1:f3920313a2]

moze jest latwiejszy sposob ,jesli tak to prosze o pomoc.


===============
na przyszłość proponuje używać bbcode
DeyV
adwol
Cytat
napisalem taki skrypt.

na serwerze lokalnym jako/tako dziala,ale w necie sa bledy i nie mozna sciagnac pliku z serwera ftp

Po zalogowaniu się przez ftp_login dołóż na wszelki wypadek (gdybyś miał jakieś firewalle albo był za maskaradą) linijkę:
[php:1:2fbe36e896]<?php
ftp_pasv($conn_id, TRUE);
?>[/php:1:2fbe36e896]
Poza tym nie rozumiem tego fragmentu Twojego skryptu:
Cytat
[php:1:2fbe36e896]<?php
if (file_exists($temp)) unlink($temp);
?>[/php:1:2fbe36e896]

Jak Ci się uda ściagnąć plik to go usuwasz po czym próbujesz otworzyć i zwrócić do klienta. Chyba nie o to chodziło? Brakuje operatora ! przed file_exists() (chociaż wtedy i tak chyba jest to zbędne)?
grohu
funckja ftp_nb_get() zapisuje zawartosc pliku do lokalnego pliku,a pozniej dopiero moge przeslac go jako zalacznik przez naglowek strony.

i wlasnie nie wiem czy to sie da zrobic prosciej.

ale ta metoda jest zla bo nie dziala w internecie na zdalnych serwerach ftp.
dziala tylko na lokalnym serwerze...
adwol
Cytat
funckja ftp_nb_get() zapisuje zawartosc pliku do lokalnego pliku,a pozniej dopiero moge przeslac go jako zalacznik przez naglowek strony.

i wlasnie nie wiem czy to sie da zrobic prosciej.

Można od razu wysyłać do klienta.
[php:1:bf3bae11ff]<?php
$fd = fopen('php://stdout', 'w');
$ret = ftp_nb_fget($conn_id, $fd, $remote_file, FTP_BINARY);
?>[/php:1:bf3bae11ff]
Cytat
ale ta metoda jest zla bo nie dziala w internecie na zdalnych serwerach ftp.
dziala tylko na lokalnym serwerze...

A sprawdziłeś to co Ci napisałem?
grohu
ten sposob dziala,

<?php
$fd = fopen('php://stdout', 'w');
$ret = ftp_nb_fget($conn_id, $fd, $remote_file, FTP_BINARY);
?>

ale jak wyciagnac zawartosc tego pliku z stdout questionmark.gif?
nigdy sie z takim czyms nie spotkalem...

jak to napisac zeby ten plik mozna bylo pobrac z przegladarki questionmark.gif?
adwol
Cytat
ale jak wyciagnac zawartosc tego pliku z stdout questionmark.gif?  
nigdy sie z takim czyms nie spotkalem...

A po co to wyciągać? Chciałeś przecież posłać go do klienta.
Cytat
jak to napisac zeby ten plik mozna bylo pobrac z przegladarki questionmark.gif?

No właśnie tak. winksmiley.jpg
Chyba nie do końca rozumiem co chcesz uzyskać. Wydawało mi się, że chcesz sciągnąć plik z serwera ftp i posłać go od razu do przeglądarki.
grohu
chce zeby to wygladalo jak sciaganie pliku w ponizszym przykladzie:

<a href="nazwa_pliku.exe">nazwa pliku</a>

i po kliknieciu wyskakuje okienko dialogowe przegladarki i jest do wyboru : zapisz,otworz,anuluj...

chce zeby ten plik na zdalnym serwerze mozna bylo w ten sposob zapisac na lokalny dysk.

w skrocie:
-skrypt laczy sie ze zdalnym serwerem,
-jest pobierana lista plikow i do kazdego jest link przez ktory mozna go sciagnac.
klikasz na link i plik z ftp'a jest zapisywany na twoj dysk.

tak to ma wygladac i do tego caly czas daze.
b3
skorzystaj z Client URL!

dobra rzecz.. i przydatna... do takich experymentow!smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.