Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Download z ftp
Forum PHP.pl > Forum > PHP
cinus80
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!:)
ddiceman
  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?
cinus80
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);
?>
erix
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.
cinus80
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:/
Black-Berry
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.
cinus80
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!:)
Black-Berry
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.
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.