Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: как скачать файл с сайта при помощи php  (Прочитано 2091 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
есть сайт, с регистрацией
curl'ом захожу, авторизуюсь на сайте, получаю ссылку на файл, но вот как закачать по этой ссылке?

вот пример ссылки:
http://localhost/report.rtf?dt=31122010&invnum=00093270

Код: (file_get_contents) [Выделить]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>

Пользователь решил продолжить мысль 17 Января 2011, 13:13:26:
понял, символ & нужно экранировать

Пользователь решил продолжить мысль 17 Января 2011, 15:07:37:
только нифига не пойму как его экранировать?

str_replace заменяю в строке & на \&
str_replace('&', '\&',$link)

закачиваю
exec('wget $link')

получаю ошибку wget'a
report.rtf?dt=31122010\&amp;invnum=00093270

а нужно
report.rtf?dt=31122010\&invnum=00093270

« Последнее редактирование: 17 Января 2011, 15:07:37 от kostrukov »
у меня можно спросить=)

Оффлайн Catsys

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля
    • Автоматический мониторинг доступности сайтов (есть возможность просто пропинговать сайт онлайн)
Re: как скачать файл с сайта при помощи php
« Ответ #1 : 17 Января 2011, 15:46:50 »
попробуй чпу (rewrite в .htaccess)

Оффлайн arrecck

  • Старожил
  • *
  • Сообщений: 1725
    • Просмотр профиля
Re: как скачать файл с сайта при помощи php
« Ответ #2 : 17 Января 2011, 16:49:42 »
Цитировать
http://localhost/report.rtf?dt=31122010&invnum=00093270
проверь заголовки

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: как скачать файл с сайта при помощи php
« Ответ #3 : 17 Января 2011, 17:05:53 »
вызывая wget из php такая ерунда, если из баша, то скачивает

указал wget'y кукисы, скачал.

exec("wget --load-cookies=/home/router/mag.txt -N -O /var/www/report/report.rtf $url4")

у меня можно спросить=)

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: как скачать файл с сайта при помощи php
« Ответ #4 : 17 Января 2011, 17:21:23 »
exec("wget '$link'")
Я конечно далек от мысли...(с)

Оффлайн __v1tos

  • Участник
  • *
  • Сообщений: 105
  • Ubuntuu 10.10 x86-64
    • Просмотр профиля
Re: как скачать файл с сайта при помощи php
« Ответ #5 : 17 Января 2011, 18:07:53 »
AMD Phenom II 945, GA-MA790GPT-UD3H (HD 3300), 5 GiB ram

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: как скачать файл с сайта при помощи php
« Ответ #6 : 17 Января 2011, 20:08:19 »
exec("wget '$link'")
с кавычками тоже пробовал, также меняет амперсенд & на &amp; - зачем не понятно)

http://localhost/report.rtf?dt=31122010&invnum=00093270
localhost - непонятно
это всего лиш пример ссылки, хост не важен

попробуй чпу (rewrite в .htaccess)
это для чего и зачем??

Цитировать
http://localhost/report.rtf?dt=31122010&invnum=00093270
проверь заголовки
и заголовки верны, дело в том что ссылка каверкается, и далее & обрезается, соответственно файл не найден - Bad Request


ИТОГ:
как уже писал, такая конструкция позволяет скачать файл:
exec("wget --load-cookies=/home/router/mag.txt -N -O /var/www/report/report.rtf $url4")почему при указании кукисов, файл скачивается мне не ведомо, ибо ссылка то также обрезается)
у меня можно спросить=)

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: как скачать файл с сайта при помощи php
« Ответ #7 : 17 Января 2011, 20:44:55 »
Вопрос - откудова берется линк ?
#!/usr/bin/php

<?
$link="http://foo2capt.svn.sourceforge.net/viewvc/foo2capt/acommands.txt?view=log&sdfsdfsd";
exec("wget '$link'");
?>
Я конечно далек от мысли...(с)

Оффлайн arrecck

  • Старожил
  • *
  • Сообщений: 1725
    • Просмотр профиля
Re: как скачать файл с сайта при помощи php
« Ответ #8 : 17 Января 2011, 20:46:10 »
а если так?
   exec('wget '.escapeshellarg('http://localhost/report.rtf?dt=31122010&invnum=00093270'));

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: как скачать файл с сайта при помощи php
« Ответ #9 : 17 Января 2011, 20:50:44 »
тогда уж так
#!/usr/bin/php

<?
$link="http://foo2capt.svn.sourceforge.net/viewvc/foo2capt/acommands.txt?view=log&amp;sdfsdfsd";
exec("wget '".htmlspecialchars_decode($link)."'");
?>
Я конечно далек от мысли...(с)

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: как скачать файл с сайта при помощи php
« Ответ #10 : 18 Января 2011, 08:57:17 »
с кавычками тоже пробовал, также меняет амперсенд & на &amp; - зачем не понятно)
На всякий пожарный случай.
http://msdn.microsoft.com/ru-ru/library/ms748250(VS.90).aspx

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: как скачать файл с сайта при помощи php
« Ответ #11 : 18 Января 2011, 10:51:22 »
с кавычками тоже пробовал, также меняет амперсенд & на &amp; - зачем не понятно)
На всякий пожарный случай.
http://msdn.microsoft.com/ru-ru/library/ms748250(VS.90).aspx
это конечно познавательно, только зачем?
у меня можно спросить=)

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: как скачать файл с сайта при помощи php
« Ответ #12 : 18 Января 2011, 11:31:17 »
В Вашем контексте, смысла нет. Но кто об этом, кроме Вас, о этом знает ?
Если URL строки будут в xml файле, то xml файл станет невалидным. И ajax не сможет их интерпретировать как xml (только как текст).
К тому же грядут новые стандарты. Надо к ним готовиться.

 

Страница сгенерирована за 0.068 секунд. Запросов: 25.