Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Download z ftp
cinus80
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.05.2005

Ostrzeżenie: (0%)
-----


Witam!
Robię prostego klienta do uploadu i dowloadu w php.
Upload poszedł bez problemu, ale mam problem z downloadem - mecze się już trzeci dzień:/ Dostęp do ftp dla kilku użytkowników na login i hasło.
Jak najprościej napisać w php kod którym użytkownicy mogliby ściągać pliki z ftp? Do ftp użytkownik ma dostęp na zasadzie, ze logując się do niego zostaje wrzucony do własnego katalogu ftp.
Próbowałem już z ftp://login:haslo@adres/katalog/plik , ale przy tym myku otwiera mi po prostu ten plik w przeglądarce.
Z góry WIELKIE DZIĘKI za pomoc!:)
Go to the top of the page
+Quote Post
ddiceman
post
Post #2





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  3. header('Content-Description: File Transfer');
  4. header('Content-Type: application/octet-stream');
  5. header('Content-Length: ' . filesize('ftp://login:haslo@adres/katalog/plik'));
  6. header('Content-Disposition: attachment; filename=' . basename('ftp://login:haslo@adres/katalog/plik'));
  7. readfile('ftp://login:haslo@adres/katalog/plik');
  8. exit();
  9. ?>

jakos tak?

Ten post edytował ddiceman 11.03.2009, 13:11:31
Go to the top of the page
+Quote Post
cinus80
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.05.2005

Ostrzeżenie: (0%)
-----


dzięki za pomoc udało mi się to zrobić (na końcu umieszczam kod dla potomnych;)
...ale mam jeszcze jeden problem...
Jak rejestrować, czy dany plik został ściągnięty... nie chodzi mi jedynie, czy został kliknięty przycisk "Pobierz", ale potrzebuje info, że dany plik został w całości ściągnięty przez użytkownika.
Z góry dzięki za pomoc:)

P.S.
kod dla potomnych
Kod
<?
$attachment_location = 'ftp://login:haslo@server/'.$_POST['katalog'].'/'.$_POST['plik'];
$conn_id = ftp_connect("server");
// Open a session to an external ftp site
$login_result = ftp_login ($conn_id, "login", "haslo");
// Check open
if ((!$conn_id) || (!$login_result)) {
    echo "Ftp-connect failed!"; die;
} else {}
ftp_chdir($conn_id, $_POST['katalog']);
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="'.basename($attachment_location).'"');
readfile($attachment_location);
?>


Ten post edytował cinus80 13.03.2009, 12:09:27
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Jak rejestrować, czy dany plik został ściągnięty... nie chodzi mi jedynie, czy został kliknięty przycisk "Pobierz", ale potrzebuje info, że dany plik został w całości ściągnięty przez użytkownika.

W PHP raczej tego nie sprawdzisz; w Perlu pewnie tak.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
cinus80
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.05.2005

Ostrzeżenie: (0%)
-----


Cytat(erix @ 13.03.2009, 12:46:20 ) *
W PHP raczej tego nie sprawdzisz; w Perlu pewnie tak.

A mógłbyś mnie choć troche naprowadzić jak to zrobić w Perlu? Bo z tego jestem zimny:/
Go to the top of the page
+Quote Post
Black-Berry
post
Post #6





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Wydaje mi się że w PHP byłoby to możliwe. Znalazłem funkcję w jesnym ze swoich starch skryptów.
  1. <?php
  2. register_shutdown_function('function_name');
  3. ?>


Nie wiem czy to zadzaiął bo nie testowałem. Jeśli tak to daj znać. Informacja może być przydatna.

A tak poza tym to twój kod nie zadziała przy duzych plikach. Podaj maila to prześlę Ci lepszy kod.


--------------------
Go to the top of the page
+Quote Post
cinus80
post
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.05.2005

Ostrzeżenie: (0%)
-----


Cytat(Black-Berry @ 13.03.2009, 14:50:50 ) *
A tak poza tym to twój kod nie zadziała przy duzych plikach. Podaj maila to prześlę Ci lepszy kod.

Dzięki Black-Berry, ze mnie ostrzegłeś, bo mi własnie będzie potrzebne przesyłanie duuużych plików...
Mój adres: cinus1980@tlen.pl
Z góry WIELKIE DZIĘKI za skrypt!:)
Go to the top of the page
+Quote Post
Black-Berry
post
Post #8





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Posłałem Ci całą klasę. Posprawdzaj to sobie jeszcze. W nagłowku jest komentarz jak wykonać sprawdzenie czy ktos siagnał cały plik. Nie testowałem jeszcze. Napewno bedziesz musial zmodyfikowac boi klasa jest do sciagania plików bez logowania na ftp.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 07:48