Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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
 
Start new topic
Odpowiedzi (1 - 7)
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.
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.09.2025 - 10:55