Как сделать вызов curl для удаленного URL, который содержит пробел

Этот вопрос является продолжением моего предыдущего вопрос

<?php

$remoteFile = 'http://cdn/bucket/my textfile.txt';
$ch = curl_init($remoteFile);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //not necessary unless the file redirects (like the PHP example we're using here)
$data = curl_exec($ch);
print_r($data)
curl_close($ch);
if ($data === false) {
echo 'cURL failed';
exit;
}

$contentLength = 'unknown';
$status = 'unknown';
if (preg_match('/^HTTP\/1\.[01] (\d\d\d)/', $data, $matches)) {
$status = (int)$matches[1];
}
if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
$contentLength = (int)$matches[1];
}

echo 'HTTP Status: ' . $status . "\n";
echo 'Content-Length: ' . $contentLength;
?>

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

page not found  09/18/2014 - 16:54  http://cdn/bucket/my textfile.txt

Могу ли я сделать вызов curl для удаленного URL, который содержит пробел?

Дать немного больше информации на этом

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

0

Решение

Вы должны закодировать ваш URL, в котором есть пробел.

echo urlencode('http://cdn/bucket/my textfile.txt');

Ref: UrlEncode

или вы можете использовать,

echo '<a href="http://example.com/department_list_script/',
rawurlencode('sales and marketing/Miami'), '">';

Ref: rawurlencode

1

Другие решения

Да, вам нужно кодировать URL / URI

В закодированном URL пробелы кодируются как:% 20, поэтому ваш URL будет: http://cdn/bucket/my%20textfile.txt так что вы можете просто использовать этот URL.

Или, поскольку это PHP, вы можете использовать функцию urlencode.
ссылка: http://php.net/manual/en/function.urlencode.php

например

$ remoteFile = urlencode (‘Http: // CDN / ведро / мой textfile.txt ‘);

или же

$ ch = curl_init (urlencode ($ remoteFile));

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector