У меня есть интересная проблема "застрял файл" - PullRequest
1 голос
/ 31 марта 2012

Я нахожусь в процессе создания простого инструмента администрирования изображений, который позволяет пользователям загружать и удалять изображения с сервера.Пока что это очень простой материал.Я обнаружил, что загрузка файлов, имя файла которых содержит пробел, вызывает проблему - все в имени, вплоть до пробела, включено в имя загруженного файла, но ничего после этого.Проблема в этом не столько в поврежденных ссылках на изображения (я могу справиться с ними), но в том, что изображения не могут быть удалены с помощью моего инструмента удаления или самого простого сценария «отсоединить».Как только я обнаружил проблему и причину, я связался с нашими специалистами службы поддержки, и они удалили два файла проблемы.К сожалению, из-за системных ограничений здесь на работе, у меня нет доступа к FTP.

Теперь вы думаете, что все решено, но нет.Я добавил очень четкие предупреждающие сообщения - жирным красным шрифтом - к этому прототипу инструмента администрирования, и я сообщил своему боссу и нескольким другим людям об этом инструменте по электронной почте, объясняя, ЧТО ЯВЛЯЕТСЯ, что имена файлов с пробелами не работают.Итак ... что делает мой босс?Она загрузила два файла с пробелами в имени файла.

Так что, пока у меня не будет способа добавить идиотский фильтр в сценарий, кто-нибудь может подсказать, как я могу удалить эти два файла?Я бы даже захотел удалить заполненный каталог и воссоздать его (ни одно из изображений там ничего не значит, только случайные вещи).

И если нет советов о том, как их расклеить, есть ли совет, каккак я могу помешать моему боссу вести себя как идиот, если не отрубить ей пальцы?

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

Мой лучший ответ будет, как вы сказали, переместить все другие файлы в другую папку, удалить папку, воссоздать папку. После этого, я думаю, вам нужен urlencode в вашем php, чтобы иметь дело со странными символами и пробелами в именах файлов. Один вопрос, который может помочь другим, ты в Linux или Windows?

В качестве теста, пока он не заработает, попробуйте записать на диск, к которому у вас есть доступ, чтобы вы могли играть, пока он не заработает. Затем переключитесь на действующую систему. Таким образом, вам не нужно обращаться в службу поддержки, чтобы удалить ваши тесты.

Кроме того, вы можете просто заменить все пробелы подчеркиванием для быстрого исправления.

1 голос
/ 31 марта 2012

При удалении файлов, используя unlink() с их именами, имеющими пробелы, экранируйте их с помощью "\". Это будет работать только в Linux.

...