Этот вопрос является продолжением моего предыдущего вопрос
<?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 (поэтому пользователь
может дать любой заголовок, который хочет пользователь, он может содержать пробел) и все
информация в сохранении в конце базы данных. У меня есть другой интерфейс, где я
восстановить сохраненную информацию и показать ее на моей странице вместе с файлом
размер, который я получаю, используя приведенный выше код.
Вы должны закодировать ваш 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
Да, вам нужно кодировать 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));