Я использую coldfusion 9, и я пытаюсь захватить файл от FTP-сайта и загрузить его в поршень вместо файловой системы. Если я пробую его с помощью безопасного соединения FTP, это перестало работать с этой ошибкой:
Ошибка произошла во время SFTP getfile операция. Ошибка: C:\JRun4\servers\cfusion\SERVER-INF\temp\cfusion-war-tmp\ram:\test.txt (Имя файла, имя каталога или синтаксис метки тома являются неправильными). Проверьте на плохой путь, имя файла или каталог.
Если я пробую то же самое не безопасным FTP-сайтом, оно работает просто великолепно. Вот код:
<cfftp action = "open"
username = "xxxxx"
connection = "My_query"
password = "xxxxxxx"
server = "ftp.xxxxxx.com"
port="13266"
secure = "true"
stopOnError = "Yes">
<cfftp action="getfile"
connection="My_query"
remoteFile="/something.txt"
stopOnError="true"
localfile="ram://test.txt">
Adobe подтвердила это как ошибку и устранила ее в ColdFusion 9.0.1
Ответ ЛБускина превосходен; У меня есть просто несколько вещей добавить.
Первый, JScript. ЧИСТЫЙ действительно делает эту оптимизацию. JScript часто используется менее опытными программистами для задач, которые включают построение больших последовательностей в циклах, таких как построение объектов JSON, HTML-данных и так далее.
Поскольку эти программисты могут не знать о n-квадратичной стоимости наивного распределения последовательности, могут не знать о существовании последовательности строителей и часто писать код с помощью этого образца, мы сочли, что было бы разумно использовать эту оптимизацию JScript.NET.
Программисты C #, как правило, больше осведомлены о базовых затратах на код, который они пишут, и больше знают о существовании готовых компонентов, таких как StringBuilder, поэтому они нуждаются в такой оптимизации меньше. И что более принципиально, философия дизайна C # заключается в том, что это язык «делай то, что я сказал» с минимумом «магии»; JScript - это язык «делай то, что я имею в виду», который делает все возможное, чтобы понять, как лучше служить тебе, даже если это иногда означает догадываться неправильно. Обе философии справедливы и полезны.
Иногда это «идет в другой путь». Сравните этот выбор с выбором, который мы делаем для переключателей на последовательностях. Коммутаторы на последовательностях фактически компилируются как создание словаря, содержащего последовательности, а не как ряд сравнений строк. Эта оптимизация может быть плохой; это может быть быстрее просто сделать сравнение последовательностей. Но здесь мы догадываемся, что вы «имели в виду» переход к табличному поиску, а не к серии утверждений «если» - если бы вы имели в виду серию утверждений «если», вы могли бы легко написать это самостоятельно.
-121--1633834- Интерфейс администратора использует __ str __ ()
для определения дисплея модели. При создании модели я всегда определяю как __ Юникод __ ()
, так и __ str __ ()
. Например:
class Activity(models.Model):
activity_code = models.ForeignKey(ActivityCode)
note = models.TextField(blank=True)
def __str__(self):
return "(%s) %s" % (self.activity_code.short, self.note)
def __unicode__(self):
return u'(%s) %s' % (self.activity_code.short, self.note)
Update:
Это выглядит так, как будто ваш def __ unicode __ (self)
не имеет правильного отступа в коде. В результате он не является частью вашего класса и не используется. Отступы очень важны в Python.
Это может быть исправимо, если удалить части последовательности.
Попробуйте заменить ram ://test.txt
с
ram :///test.txt
Также можно попробовать избежать символа «:».
Этот тип действий безопасен только для продвинутых пользователей. Перепутать с незаконными символами при передаче файлов имеет присущий риск оставить мусор на диске.