Рассмотрим следующий фрагмент кода:
if (!copy($productdetails['img'][0], "../tempimages/".basename($product['img'][0])))
{
//error and exit or whatever
}
Примером неудачного файла является "proView.MHL H.jpg"
.
Файл копируется с одного сайта на другой (серверы Linux). Оба входа имеют переменные, т.е. Я не могу жестко закодировать имена файлов. Решение также не может использовать команды оболочки.
Как я могу получить файл для копирования, если он содержит недопустимые символы, такие как пробелы и даже нечетную косую черту? Предполагая, что это возможно?
В этом случае ужасная практика помещения пробелов и полных остановок в имени файла из моих рук.
Спасибо.
EDIT Извините, что забыл сообщение об ошибке, которое выглядит следующим образом
Предупреждение: копия (http://www.private.co.za/proView.MHL H.jpg): не удалось открыть поток: HTTP-запрос не удался! HTTP/1.1 400 Bad Request в C:\websites\schosting\copytest.php в строке 4
GET/proView.MHL H.jpg HTTP/1.0
не является допустимой строкой запроса, и это то, что генерирует ваш PHP, и почему вы получаете ошибку 400 Bad Request
.
Решение состоит в том, чтобы соответствующим образом закодировать файл, хотя самым простым способом может быть просто обработка пространства (str_replace(' ','%20',$productdetails['img'][0])
), поскольку это единственное реальная проблема-причина.