Napisałem taki skrypt, lecz zamiast pobierać mi plik ze zmianą nazwy w locie to pobiera pusty plik bez zmiany nazwy
ob_start();
$nazwa='nazwa.mp3';
$link='http://juniorcia.wrzuta.pl/aud/file/a1Osn9y2XL/eric_clapton_-_tears_in_heaven';
$fh = fopen($nazwa, 'w');
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname( __FILE__ ).'/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname( __FILE__ ).'/cookie.txt');
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
if($link)
{
ob_get_clean();
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=".basename($link).";");
header("Accept-Ranges: bytes");
header("Content-Transfer-Encoding: binary");
readfile($nazwa);
exit;
}
ob_end_flush();
kutar
(Kutar 0)
26 Sierpień 2008 21:27
#2
Czy zapisanie ściąganego pliku jest konieczne (nazwa.mp3)? Bo jeśli nie to wystarczyłoby bez zapisania przekierować na download, a tak to jest wynajdywanie koła na nowo.
Spójrz:
curl_setopt($ch, CURLOPT_URL, $link);
wszędzie w curl_setopt() masz zmienną (resource) $ch, skąd ją wziąłeś? z kosmosu? A gdzie zainicjowanie CURLa?
$ch=curl_init();
fragment kodu:
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname( __FILE__ ).'/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname( __FILE__ ).'/cookie.txt');
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
A nie zmienia nazwy, bo przekazujesz do downloadu nazwę z wrzuty:
header("Content-Disposition: attachment; filename=".basename($link).";");
Poprawilem ale dalej nic z tego ;/
<?php
ob_start();
$nazwa='nazwa.mp3';
$link='http://juniorcia.wrzuta.pl/aud/file/a1Osn9y2XL/eric_clapton_-_tears_in_heaven';
$fh = fopen(basename($link), 'w');
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname( __FILE__ ).'/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname( __FILE__ ).'/cookie.txt');
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
if($link)
{
ob_get_clean();
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=".basename($link).";");
header("Accept-Ranges: bytes");
header("Content-Transfer-Encoding: binary");
readfile($nazwa);
exit;
}
ob_end_flush();
?>
problem rozwiązany, Wystarczy zrobić coś takiego:
<?php
$filename = 'http://juniorcia.wrzuta.pl/aud/file/a1Osn9y2XL/eric_clapton_-_tears_in_heaven';
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.'nazwa.mp3');
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename));
readfile($filename);
?>
Teraz mam pytanie. Czy to żre transfer z mojego hostingu??
kutar
(Kutar 0)
27 Sierpień 2008 11:13
#6
Łoj, nie to kliknąłem, potwierdziłem bez czytania i usunąłem post zamiast edytować:/
Tak, żre transfer z Twojego hostingu, nawet podwójnie, bo najpierw pobiera plik, a później go wysyła do Ciebie.
A to co napisałem poprzednio zaraz dodam.
//EDIT:
Problemem jest nieskorzystanie ze zmiennej $nazwa do otwarcia pliku.
$nazwa='nazwa.mp3';
$link='http://juniorcia.wrzuta.pl/aud/file/a1Osn9y2XL/eric_clapton_-_tears_in_heaven';
$fh = fopen(basename($link), 'w');
A później żądania właśnie tego pliku ze zmiennej $nazwa
readfile($nazwa);