Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] pobieranie plików przez skrypt php
yarek12
post 5.07.2011, 20:27:31
Post #1





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.08.2010

Ostrzeżenie: (10%)
X----


Witam,
dotychczas pobierałem pliki po prostu odsyłając do nich przez <a href="xxx">, jednak teraz obsługuje też pliki które przeglądarka jest w stanie otworzyć i wtedy ich nie pobiera tylko otwiera.
potrzebuję teraz skryptu który pobierze mi pliki nie zależnie czy przeglądarka może je otworzyć.

Czytałem już o readfile(); w manualu, i myślę, że jest to dobre rozwiązanie, jednak nie wiem jak tego użyć, tzn na razie wymyśliłem, że zrobię sobie osobny plik w których będzie readfile i ścieżka pliku przekazywana w GET.

Jednak pytam, może ktoś z was ma ciekawszy pomysł który nie wymagał by osobnego pliki do pobierania przez readfile()
Go to the top of the page
+Quote Post
cycofiasz
post 5.07.2011, 20:53:46
Post #2





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


Jeśli masz na serwerze mod_headers albo masz możliwość jego doinstalowania to możesz wtedy ustawić serwer tak aby automatycznie były doklejane odpowiednie nagłówki zmuszające przeglądarkę do pobrania wybranych typów plików. Więcej info tu znajdziesz: http://www.thingy-ma-jig.co.uk/blog/06-08-...pdf-to-download

Jeśli nie to pozostaje plik php z readfile. To skąd skrypt będzie wiedział co ma wysłać zależy od Twoich potrzeb. Najłatwiej przekazać w GET nazwę/ścieżkę pliku, należy uważać by użytkownik mógł pobierać tylko pliki z określonego folderu
Go to the top of the page
+Quote Post
Mefiuu
post 5.07.2011, 21:11:43
Post #3





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


header i tam jest odpowiedni przykład o pobieraniu wink.gif
Go to the top of the page
+Quote Post
by_ikar
post 5.07.2011, 22:21:56
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Nie musisz robić tego zaraz za pomocą php.. Jeżeli masz możliwość użycia htaccess, to w nim możesz wpisać taką regułkę:

Kod
AddType application/octet-stream .rmvb .mp4 .gz .tgz .rar .avi .zip .txt .mkv .ass .txt .srt .ass


i tak dalej, możesz tam dopisać rozszerzenie które cię interesuje i wtedy twój plik będzie zamiast się otwierać, to będzie informować przeglądarkę o tym żeby ten plik pobrać. Czasami się to przydaje, przy dużych plikach PDF żeby nie otwierało się w przeglądarce (jaka wtyczka adobe readera jest do przeglądarek, każdy wie..).
Go to the top of the page
+Quote Post
yarek12
post 6.07.2011, 12:29:55
Post #5





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.08.2010

Ostrzeżenie: (10%)
X----


kod htaccess nie działa, chyba zostanę przy php

----

próbowałem teraz z readfile();, pobiera plik, ale w jego wartości są tylko błędy php
Go to the top of the page
+Quote Post
cycofiasz
post 6.07.2011, 13:16:32
Post #6





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


Jeśli potrzebujesz pomocy to chyba za mało szczegółów podałeś. Jakie błędy? Jaki masz kod php?
Go to the top of the page
+Quote Post
yarek12
post 6.07.2011, 20:06:19
Post #7





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.08.2010

Ostrzeżenie: (10%)
X----


  1. <?php
  2. $file = 'plik.plt';
  3.  
  4. if (file_exists($file)) {
  5. header('Content-Description: File Transfer');
  6. header('Content-Type: application/octet-stream');
  7. header('Content-Disposition: attachment; filename='.basename($file));
  8. header('Content-Transfer-Encoding: binary');
  9. header('Expires: 0');
  10. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  11. header('Pragma: public');
  12. header('Content-Length: ' . filesize($file));
  13. flush();
  14. readfile($file);
  15. }
  16. ?>


Taki mam kod, teraz pobiera plik, ale jest pusty



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

teraz na takim kodzie pracuje:

  1. <?php
  2. $file = $_GET['file'];
  3. header('Content-Type: application/octet-stream');
  4. header('Content-Disposition: attachment; filename="'.$file.'"');
  5. readfile('../files/'.$file.'');
  6. ?>


na localhost wszystko smiga pięknie, jednak jak wrzuce na serwer, to owszem pobiera pliki ale nie da się ich odtworzyć, jak np pobierze obrazek to pisze nie podgląd nie możliwy, tak jakby ich zawartość się niszczyła

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

jak pobieram plik z serwera to jego zawartość jest taka, (nie dziwne że nie działają te pliki):

  1. <br />
  2. <b>Warning</b>: readfile(../files/[110]_[test]_[300x300]_[633d5d].txt) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: Permission denied in <b>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/includes/download.php</b> on line <b>5</b><br />
  3.  



---------

w linii 5, czyli tam gdzie jest błąd:

  1. readfile('../files/'.$file.'');


Ten post edytował yarek12 6.07.2011, 20:13:40
Go to the top of the page
+Quote Post
matix
post 6.07.2011, 20:58:13
Post #8





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

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


failed to open stream: Permission denied - brak dostępu do pliku, chmod załatwi sprawę.


--------------------
Nawet, jeżeli nie jesteś zainteresowany usługami IT ani outsourcingiem, a Twoją pasją jest programowanie - zobacz naszą stronę. Piszemy dużo fajnych use-caseów, jak podchodzimy do tematu programowania dla naszych klientów. A tak na co dzień tworzymy budujemy mvp oraz tworzymy platformę b2b.
Go to the top of the page
+Quote Post
toaspzoo
post 6.07.2011, 21:01:31
Post #9





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


cURL


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

LS Easter egg <
Go to the top of the page
+Quote Post
yarek12
post 6.07.2011, 21:35:46
Post #10





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.08.2010

Ostrzeżenie: (10%)
X----


Cytat(matix @ 6.07.2011, 21:58:13 ) *
failed to open stream: Permission denied - brak dostępu do pliku, chmod załatwi sprawę.



Tak myślałem, ale pliki które są dodawane mają chmoda 766
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 Wersja Lo-Fi Aktualny czas: 8.05.2025 - 04:54