Я пытаюсь загрузить некоторые файлы, и для этого мне также нужны mimetypes. Хотя для первых нескольких файлов mime_content_type
вроде бы работало, я заметил, что когда (абсолютный) путь содержит определенные символы, он терпит неудачу.
Я пробовал несколько разных имен файлов и каталогов со следующими результатами:
$path = "C:\Users\Desktop\empty.txt";
mime_content_type($path);
//Warning: mime_content_type(C:\Users\Desktop{empty-square}mpty.txt): failed to open stream: No such file or directory
$path = "C:\Users\Desktop\tempty.txt";
mime_content_type($path);
//Warning: mime_content_type(C:\Users\Desktop empty.txt): failed to open stream: No such file or directory
$path = "C:\Users\Desktop\xemptydir\xempty.txt";
mime_content_type($path);
//Warning: mime_content_type(C:\Users\Desktop{empty-square}mptydir{empty-square}mpty.txt): failed to open stream: No such file or directory
$path = "C:\Users\Desktop\lemptydir\lempty.txt";
mime_content_type($path);
//OK
Итак, после того как я увидел, что \t
превращается в символ табуляции, стало немного яснее, что такие символы, как \e
, \t
, \n
, \x
, вызывают эту проблему. Я подумал, что побег поможет решить проблему, поэтому я попытался addslashes()
, но это дало мне тот же результат. Так как я могу решить эту проблему?
редактировать
После публикации вопроса я заметил, что «пустые квадраты» (похожие на это □) исчезли, поэтому я поместил его в фигурные скобки, чтобы вы знали, что там есть пустой квадрат.