Как скопировать файл с пробелами и полными остановками в имени файла, используя функцию копирования php? [Дубликат]

0

Рассмотрим следующий фрагмент кода:

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

  • 0
    может быть, str_replace недопустимого символа перед записью файла может помочь, я полагаю, что вы можете прочитать файл даже со странным именем, в конце концов вы можете попробовать поместить% cod (возможно, это% 20) вместо пробелов
  • 0
    Уточните фактическое имя входного файла. Вы продаете URL как имя файла, возможно, и забыли упомянуть об этом? Пробелы сами по себе не являются проблемой для файловых функций. Так что же на самом деле сообщение об ошибке?
Показать ещё 5 комментариев
Теги:

1 ответ

0
Лучший ответ

GET/proView.MHL H.jpg HTTP/1.0 не является допустимой строкой запроса, и это то, что генерирует ваш PHP, и почему вы получаете ошибку 400 Bad Request.

Решение состоит в том, чтобы соответствующим образом закодировать файл, хотя самым простым способом может быть просто обработка пространства (str_replace(' ','%20',$productdetails['img'][0])), поскольку это единственное реальная проблема-причина.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню