С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
116 / 94 / 12
Регистрация: 13.02.2013
Сообщений: 278

Получение rar, zip, 7z

21.11.2013, 18:48. Показов 3417. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
PHP начал учить недавно, поэтому прошу помощи.

Написал код, который получает rar файл в текстовом виде

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
if($_GET['ID']){
$file_id = $_GET['ID'];
header("Content-Type: application/rar");
header("Content-Disposition: attachment; filename=test.rar");
 
//получаю файл
if( $curl = curl_init() ) {
    curl_setopt($curl, CURLOPT_URL, 'http://site.ru/index.php?do=files&op=showfile&lid=' . $file_id);
    curl_setopt($curl, CURLOPT_REFERER, 'http://site.ru/category/' . $file_id . '-.html');//На сайте стоит защита от прямых ссылок
    $out = curl_exec($curl);
    curl_close($curl);
}
}
Но не получается определить размер и тип файла
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2013, 18:48
Ответы с готовыми решениями:

Работа с RAR или ZIP
Здравствуйте! Подскажите библиотеку для упаковки/распаковки RAR или ZIP архивов. Очень желательным условием является возможность...

Создание архива rar/zip на C++
Народ, такая ситуация, мне необходимо создать архив rar или zip (желательно rar, запароленный) при помощи консольной программы на C++. ...

Создание zip/rar архива
Очень много смотрел, читал и так и не нашёл как создать архив с файлами на c# NET.2.0 Помогите :)

17
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
21.11.2013, 19:51
а как так как текст скачать?
0
116 / 94 / 12
Регистрация: 13.02.2013
Сообщений: 278
21.11.2013, 22:10  [ТС]
Цитата Сообщение от JxF-TEAM Посмотреть сообщение
а как так как текст скачать?
Мне нужно архив скачать, но я могу его получить только в виде Rar!ϐs <Ût и т.д.
Как по другому - не знаю

Добавлено через 2 часа 6 минут
Может я не очень понятно объяснил, попытаюсь по проще

по адресу http://site.ru/index.php?do=files&op=showfile&lid=FileID находится zip, rar или 7z файл, который нужно скачать, НО для скачивания нужен REFERER страницы http://site.ru/category/FileID-.html

Задача: скачать файл
0
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
22.11.2013, 09:44
ну а пример..р абочуюу ссылку можна?
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
22.11.2013, 15:05
OT_VINTA, размер и тип файла Вам должен будет сообщить site.ru в заголовках, когда будет отдавать свой файл.
На форуме уже была похожая тема: Скачивание файла с сервера
И вот еще: Скачивание бинарных файлов по HTTP
1
116 / 94 / 12
Регистрация: 13.02.2013
Сообщений: 278
22.11.2013, 18:56  [ТС]
romchiksoad, спасибо за ссылки, первый вариант подходит, но всё же не получается определить тип файла, curl_getinfo($ch, CURLINFO_CONTENT_TYPE) не помогло
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
22.11.2013, 19:19
OT_VINTA, а если без второго параметра вызвать curl_getinfo? В результирующем массиве есть элемент content_type? Еще можно попробовать скачать файл не через скрипт и посмотреть на заголовки. Там где-то должно быть указано имя файла с расширением или что-то в этом роде. Еще можно через функцию get_headers получить все заголовки.
P.S. Во втором примере можно было получить доступ ко всем заголовкам, которые отправляет нам сервер.
0
116 / 94 / 12
Регистрация: 13.02.2013
Сообщений: 278
22.11.2013, 20:05  [ТС]
romchiksoad, сервер не возвращает тип файла (
только в названии
Content-Disposition: attachment; filename=ХХХ
вот так.
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
22.11.2013, 20:06
OT_VINTA, тогда парсите его оттуда regexp`ом. Больше ничего не остается делать
0
116 / 94 / 12
Регистрация: 13.02.2013
Сообщений: 278
22.11.2013, 20:17  [ТС]
А как получить filename=ХХХ ?
http://us1.php.net/curl_getinfo
Читал тут - не нашёл (
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
22.11.2013, 20:25
OT_VINTA, не уверен, но сначала попробуйте передать resource, возвращаемый curl_init, в функцию fgets. Если не получится, то тогда либо открывать новое соединение через fsockopen и передавать полученный дескриптор в туже fgets, либо через функцию get_headers попробовать получить заголовки. Но Вы говорите, что там стоит защита от прямого скачивания, так что второй вариант может не сработать как нужно.
1
116 / 94 / 12
Регистрация: 13.02.2013
Сообщений: 278
22.11.2013, 21:03  [ТС]
ничего не получается
Пока поставлю тип zip всем файлам (почти все архиваторы откроют файл)
Завтра на свежую голову ещё подумаю
0
46 / 48 / 2
Регистрация: 16.08.2013
Сообщений: 257
23.11.2013, 06:41
Миме тип можно узнать с помощью Fileinfo(), значит эта ссылка - http://site.ru/index.php?do=files&op=showfile&lid= просто перебрасывает (3**) на конкретный файл, сама по себе возвращать будет статус Moved, тут лучше как раз использовать Сокеты, где в Респонс поле Location: будет адрес файла в первом запросе по которому можно позырить миме, да и в чём проблема просто посмотреть в конце загрузки расширение в имени файла?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
23.11.2013, 07:20
Цитата Сообщение от OT_VINTA Посмотреть сообщение
сервер не возвращает тип файла (
Code
1
Content-Type: application/zip
0
116 / 94 / 12
Регистрация: 13.02.2013
Сообщений: 278
23.11.2013, 15:51  [ТС]
Vovan-VE и NinjaStar, код

PHP
1
2
3
4
5
6
7
8
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, 'http://site.ru/category/' . $file_id . '-.html');
curl_setopt($ch, CURLOPT_URL, 'http://site.ru/index.php?do=files&op=showfile&lid=' . $file_id);
$result = curl_exec($ch);
curl_close($ch);
ответ

Code
1
HTTP/1.1 200 OK Server: nginx/1.0.15 Date: Sat, 23 Nov 2013 11:43:16 GMT Content-Type: application/octet-stream Content-Length: 218638 Last-Modified: Sat, 23 Nov 2013 09:28:15 GMT Connection: keep-alive Set-Cookie: PHPSESSID=bl1add8t8enb560klplkqesv36; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: None Accept-Ranges: bytes Content-Disposition: attachment; filename="1385198895_bm_bigskip_r.rar" Accept-Ranges: bytes Rar!Ï&#144;s qt@&#144;5
и т.д

Добавлено через 2 минуты
NinjaStar, http://site.ru/index.php?do=files&op=showfile&lid=FileID
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
23.11.2013, 17:02
Цитата Сообщение от OT_VINTA Посмотреть сообщение
Content-Disposition: attachment; filename="1385198895_bm_bigskip_r.rar"
Ну вот отсюда возьмите. В чем проблема-то?
0
116 / 94 / 12
Регистрация: 13.02.2013
Сообщений: 278
24.11.2013, 20:36  [ТС]
Всё получилось, всем спасибо.
0
112 / 93 / 15
Регистрация: 03.10.2012
Сообщений: 315
27.11.2013, 12:20
Пусть проблема и решена, приведу свой вариант.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$ch = curl_init();
$options = array(
    CURLOPT_URL => 'http://server.com/path/to/remote/file.zip',
    CURLOPT_FILETIME => 1,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_FOLLOWLOCATION => 1,
    CURLOPT_HEADER => 1,
    CURLOPT_NOBODY => 1,
);
curl_setopt_array($ch, $options);
$res = curl_exec($ch);
$state = curl_getinfo($ch);
var_dump($state);
Результат
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
array(22) {
  ["url"]=>
  string(111) "http://server.com/path/to/remote/file.zip"
  ["content_type"]=>
  string(15) "application/zip"
  ["http_code"]=>
  int(200)
  ["header_size"]=>
  int(254)
  ["request_size"]=>
  int(143)
  ["filetime"]=>
  int(1384954740)
  ["ssl_verify_result"]=>
  int(0)
  ["redirect_count"]=>
  int(0)
  ["total_time"]=>
  float(0.329443)
  ["namelookup_time"]=>
  float(0.155331)
  ["connect_time"]=>
  float(0.235039)
  ["pretransfer_time"]=>
  float(0.235051)
  ["size_upload"]=>
  float(0)
  ["size_download"]=>
  float(0)
  ["speed_download"]=>
  float(0)
  ["speed_upload"]=>
  float(0)
  ["download_content_length"]=>
  float(177117)
  ["upload_content_length"]=>
  float(0)
  ["starttransfer_time"]=>
  float(0.329359)
  ["redirect_time"]=>
  float(0)
  ["certinfo"]=>
  array(0) {
  }
  ["redirect_url"]=>
  string(0) ""
}
Собственно, чтобы получить файл, достаточно изменить настройки
PHP
1
2
3
4
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
$res = curl_exec($ch);
file_put_contents('path/to/local/file.zip', $res);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2013, 12:20
Помогаю со студенческими работами здесь

Запись и чтение из rar,zip архива
Подскажите библиотеку для работы с rar,zip архивами желательно с хорошей документацией или подскажите как прочитать файл в библиотеке...

Создание Zip или Rar архива
Здравствуйте, не подскажете, как заархивировать папку с файлами и подпапками в делфи 7? не могу разобраться с этим, не знаю, сколько часов...

Архивирование/разархивирование RAR и ZIP архивов.
Подскажите, как можно из своей програмы на VB архивировать/разархивировать (rar, zip) файлы?

Как распаковать архив (rar; zip; 7z)?
как программно распаковать архив? путь куда распаковывать архив находиться в текстовом поле. если в в папке, в которую будет распакован...

Распаковывание RAR архивов 7 zip в VBA
Здравствуйте, уважаемые форумчане. Как распаковать RAR архив при помощи 7 zip в VBA? Другого разархиватора на рабочих ПК нет, могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru