file_get_contents () и stream_get_contents () не могут открыть поток - PullRequest
0 голосов
/ 23 сентября 2011

Я пытаюсь принудительно загрузить файл, отправив ему специальные заголовки.При этом я должен перенаправить URL-запросы для документов PDF через мой скрипт загрузки.

Я передаю запрос с именем $ seg3, который перед отправкой отправляет base64_encode () ed, а затем base64_decode () ed и urlencoded () при попытке запросить файл.

Я посмотрел на использование,

if (ini_get('allow_url_fopen') == '1')
{
   $data = file_get_contents(urlencode(base64_decode($seg3)));
}
else
{
   $fp = fopen(urlencode(base64_decode($seg3)), 'rb');
   $data = stream_get_contents($fp);
   fclose($fp);
}

Но оба file_get_contents() и stream_get_content() терпят неудачу с:

fopen($URL): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found

Тем не менее, когда я выкидываю отправляемый URL-адрес, я могу скопировать и вставить его в браузер и открыть файл.

Кажется, что это происходит только в том случае, если в файле есть пробелы, однако ошибка возникает независимо от того, использую я urlencode() или нет.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2011

Возможно, URL возвращает ошибку 404, но все равно возвращает обычное содержимое. Таким образом, хотя браузер может отображать обычную страницу, эта функция не будет выполнена из-за кода результата.

0 голосов
/ 22 июня 2012

Я уверен, что это уже исправлено, но если есть пробелы, urlencode ($ url) может решить вашу проблему.

...