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%)
-----


Jest już lepiej, mp3 się sciąga nie ma błędów ale jeżeli jest to dużej mp3/set który ma ponad godzine muzyki to pobrało tylko 49min (IMG:style_emoticons/default/biggrin.gif)
Kod wygląda teraz tak

  1. function downloadPage2($url){
  2. $ch = curl_init();
  3. $userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
  4. curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
  5. curl_setopt($ch, CURLOPT_URL, $url);
  6. curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  7. curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  8. curl_setopt($ch, CURLOPT_HEADER, 0);
  9. curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch, $body) {
  10. echo $body;
  11. return strlen($body);
  12. });
  13.  
  14. header('Expires: 0'); // no cache
  15. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  16. header('Cache-Control: private', false);
  17. header('Content-Type: application/force-download');
  18. header('Content-Disposition: attachment; filename="mp3.mp3"');
  19. header('Content-Transfer-Encoding: binary');
  20. // header('Content-Length: '. $fileSize*8); // provide file size
  21. header('Connection: close');
  22.  
  23. curl_exec ($ch);
  24. curl_close($ch);
  25.  
  26.  
  27. }

Dziwne bo nie pobrało całego a mp3 działa .. jakieś pomysły czasmu nie pobrało do końca całego?

Dobra ..
  1. curl_setopt($curl, CURLOPT_TIMEOUT, 0);]
załatwił wszystko.
Kartin, dzięki za pomoc raz jeszcze . Piwo dla Ciebie za wgl obecność na tym forum (IMG:style_emoticons/default/biggrin.gif)

Ten post edytował trollman 22.08.2015, 16:53:15
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: 1.01.2026 - 17:02