У меня есть очень простая загрузка файла, которая позволяет пользователям загружать файлы PDF. На другой странице я затем ссылаюсь на те файлы через тег привязки. Однако кажется, что то, когда пользователь загружают файл, который содержит знак фунта (#) это, повреждает тег привязки. Это не вызывает типа ошибки Coldfusion, это просто не может найти файл. Если я удаляю #, он работает просто великолепно. Я уверен, что существует много других символов, которые имели бы эту ту же проблему.
Я попытался поместить URLEncodedFormat()
вокруг имени файла в привязке, но это не помогает. Единственная другая вещь, о которой я мог думать, состояла в том, чтобы переименовать файл каждый раз, когда это было загружено, и удалите "#" символ (и любой другой "плохой" символ).
Должно быть более легкое решение. Какие-либо идеи?
В дополнение к FUSE, другим решением является экспорт файловой системы 9p . wmii делает это, например.
-121--3133537- В идентификаторах допускаются как :
, так и пробел. Без кавычек это вызвало бы неоднозначность при попытке определить, что именно составляет идентификатор.
Если вы управляете кодом загрузки файла, попробуйте проверить последовательность с помощью
IsValid("url",usersFileName) or
IsValid("regex",usersFileName,"[a-zA-Z0-9]")
В противном случае, если вы комфортно с regex я бы предложил что-то, как предыдущие плакаты комментируют
REReplace(usersfilename,"[^a-zA-Z0-9]","","ALL")
Эти образцы предполагают, что вы добавите. «pdf» и позволяет только буквы и цифры. Если вам нужны подчеркивания или период, он будет выглядеть так...
REReplace(usersfilename,"[^a-zA-Z0-9\._]","","ALL")
Я не регекс-гуру, если у меня есть один из этих неправильных, я уверен, что несколько прыгнут и поправят меня:)
Способ сделать это в SVN состоит в том, чтобы извлечь рабочую копию кода, внести изменения в рабочую копию, а затем при обновлении svn
получить самую последнюю версию кода из репозитория при сохранении локальных изменений. Он уведомит вас, если возникнут какие-либо конфликты.
Я думаю, что ответы, которые относятся к ветвлению и слиянию и распределенным системам управления версиями (например, Mercurial, Git), более сложны, чем то, что вам нужно.
-121--4501646-Я не думаю, что это возможно с Qt. Можно
Но я застрял после этого. Не думаю, что, кроме отправителя, можно получить любую информацию о том, как был вызван слот.
-121--3279209-Я пока не могу прокомментировать, но решение Кевинка хорошее, если не нужно сохранять то, что вы заменяете.
Мы столкнулись с экземпляром, где нам нужно было переименовать имя файла, но имя файла необходимо было несколько сохранить (требование пользователя). Простое удаление специальных символов не было вариантом. В результате мы должны были справиться с каждой заменой индивидуально, что-то вроде.
<cfset newName = replace(thisFile, "##", "(pound)", "All")>
<cfset newName = replace(newName , "&", "(amp)", "All")>
<cffile action="rename"source = "#ExpandPath("\uploads\#thisFolder#\#thisFile#")#" destination = "#newName#">
Вероятно, вам придется заменить # на ##, чтобы избежать этого, я думаю, это вызвано тем, что # фигурирует как ключевое слово Coldfusion.
Знаки фунта не являются юридическими в пределах имена файлов в Интернете. Они используются для настраичных целей якорных целей:
<a name="target">
, поэтому, если у вас есть файл # name.pdf, браузер на самом деле ищет файл «Файл» и внутренний якорь «name.pdf».
Да, вам нужно будет переименовать ваши файлы на загрузку.