Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zwrócenie pliku pobranego cURL-em
trollman
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.12.2012

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


Witam,
Mam taki problem, otóż pobrałem sobie cURL'em plik z serwera, jednakże zapisuje mi się on na razie na moim serwerze.
Macie Panowie jakieś sposoby jak wymusić aby otwrzyło się nam normalnie okno w przeglądarce gdzie zapisać plik gdy klient otworzy skrypt?

Poniżej ten skrypt co napisałem, zapisuje on pobrany plik do katalogu w którym znajduje sie skrypt php. A teraz jak uczynić jak ktoś otworzy np. www.mojastrona.pl/skrypt.php aby otworzyło mu sie okno z pobieraniem (te domyślne).

  1. $temp_file_contents = downloadPage($url);
  2. write_to_file($temp_file_contents,$title);
  3.  
  4. function downloadPage($url, $ref = ''){
  5.  
  6. $ch = curl_init();
  7. $userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
  8. curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
  9. curl_setopt($ch, CURLOPT_URL, $url);
  10. curl_setopt($ch, CURLOPT_VERBOSE, 1);
  11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  12. curl_setopt($ch, CURLOPT_AUTOREFERER, false);
  13. curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  14. curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  15. curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
  16. curl_setopt($ch, CURLOPT_HEADER, 1);
  17. $result = curl_exec($ch);
  18. curl_close($ch);
  19. return($result);
  20. }
  21.  
  22. function write_to_file($text,$new_filename){
  23. $fp = fopen($new_filename, 'w');
  24. fwrite($fp, $text);
  25. fclose($fp);
  26. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trollman
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.12.2012

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


Faktycznie działa, najlepsze jest to, że to rozwiązanie już testowałem wcześniej ale nie działało.
Wiecie co było powodem? Podanie rozmieru pliku jakos

  1. header('Content-Length: '.filesize($temp_file_contents));


Automatycznie plik sie zapisywał z rozmiarem 0kb ... gdy nie podaje wgl rozmiaru, działa perfekto.

edit:
Jeszcze taki problem zauważyłem, że jeżeli plik na serwerze jest duży (powyżej 20-50mb) to uruchomienie okna pobierania trwa bardzo długo, wrażenie jest takie jakby najpierw skrypt pobierał sobie plik, żeby następnie go wyświetlić użytkownikowi do pobrania. Idzie jakoś to obejść tak aby użytkownik miał od razu popup z pobieraniem?

Ten post edytował trollman 21.08.2015, 18:36:48
Go to the top of the page
+Quote Post

Posty w temacie


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: 24.12.2025 - 06:19