Как получить имя загрузки из URL-кодировки PHP - PullRequest
0 голосов
/ 16 апреля 2011

я пытался получить имя файла из URL, я находил его простым с базовым именем, пока не пришел URL, у которого нет знака истинного имени, пока загружено

вот примерссылки, которые я нашел

здесь истинное имя youtubedownloadersetup272.exe http://qdrive.net/index.php/page-file_share-choice-download_file-id_file-223658-ce-0

, как вы можете видеть, оно не показывает имени до загрузки.

Я много искал, яЯ отчаянно пытался ничего не найти, плохо оцениваю, если кто-то может указать мне путь, спасибо.

Извините, что беспокою еще раз, но я нашел эту ссылку на download.com, и я не вижу имя файла, используя curl

<?php

function getFilename($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    $data = curl_exec($ch);

 echo $data;    
preg_match("#filename=([^\n]+)#is", $data, $matches);

    return $matches[1];
}

echo getFilename("http://software-files-l.cnet.com/s/software/11/88/39/66/YouTubeDownloaderSetup272.exe?e=1302969716&h=89b64b6e8e7485eab1e560bbdf68281d&lop=link&ptype=1901&ontid=2071&siteId=4&edId=3&spi=fdc220b131cda22d9d3f715684d064ca&pid=11883966&psid=10647340&fileName=YouTubeDownloaderSetup272.exe"); 

?>

возвращает это с помощью echo $ data

HTTP / 1.1 200 OK Сервер: Apache Accept-Ranges: байты Расположение содержимого: вложение Тип содержимого: приложение / загрузка Возраст: 866 Дата: сб, 16Апр 2011 10:16:54 GMT Последнее изменение: пт, 08 апр 2011 18:04:41 GMT Content-Length: 4700823 Соединение: keep-alive

если я понял, что вы дали мне сценарий, он не будет работатьпотому что у него нет имени файла,есть способ получить имя без необходимости выполнять регулярное выражение или синтаксический анализ URL (YouTubeDownloaderSetup272.exe? e .........), как сценарий, который вы мне дали?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2011
function getFilename($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    $data = curl_exec($ch);

preg_match("#filename=([^\n]+)#is", $data, $matches);

    return $matches[1];
}

echo getFilename("http://qdrive.net/index.php/page-file_share-choice-download_file-id_file-223658-ce-0"); //YouTubeDownloaderSetup272.exe

Для download.com ...

function download_com($url){

    $filename = explode("?", $url);
    $filename = explode("/", $filename[0]);
    $filename = end($filename);

    return $filename;

}

echo download_com("http://software-files-l.cnet.com/s/software/11/88/39/66/YouTubeDownloaderSetup272.exe?e=1302969716&h=89b64b6e8e7485eab1e560bbdf68281d&lop=link&ptype=1901&ontid=2071&siteId=4&edId=3&spi=fdc220b131cda22d9d3f715684d064ca&pid=11883966&psid=10647340&fileName=YouTubeDownloaderSetup272.exe");
0 голосов
/ 16 апреля 2011

Вам необходимо использовать curl или другую библиотеку для запроса файла и просмотра заголовков ответа.

Вы будете искать заголовок как:

Content-Disposition: attachment; filename=???

Где вопросительные знаки - это имя файла.

(Вам все равно придется загрузить файл или, по крайней мере, выглядеть так, как будто вы скачиваете файл.)

...