CFSCRIPT - Как проверить длину имени файла перед загрузкой

Я столкнулся с этой проблемой при загрузке файла с супер длинным именем - в поле моей базы данных было всего 50 символов. С тех пор я увеличил длину поля базы данных, но я хотел бы иметь возможность проверить длину имени файла перед загрузкой. Ниже мой код. Проверка возвращает 85 как длину символа. И он возвращает одинаковое количество для каждого другого файла, который я загружаю (ни один из которых не имеет длину имени файла 85).

    <cfscript>
    missing_info = "<p>There was a slight problem with your submission. The following are required or invalid:</p><ul>";
    // Check the length of the file name for our database field
    if ( len(Form["ResumeFile1"]) gt 100 )
    {
    missing_info = missing_info & "<li>'Resume File 1' is invalid. Character length must be less than 100. Current count is " & len(Form["ResumeFile1"]) & ".</li>";
    validation_error = true;
    ResumeFileInvalidMarker  = true;
    }
    </cfscript>

Кто-нибудь видит что-то не так с этим?

Спасибо!

2 ответа

Решение

Быстрое уточнение в формулировке вашего вопроса. Ко времени выполнения вашего кода загрузка файла уже произошла. Файл находится во временном каталоге на сервере ColdFusion, а поле формы, относящееся к загрузке файла, содержит временное имя файла для этого файла. Помимо проверки наличия файла, ничего не делать напрямую с этим файлом, иначе вы обойдете некоторые встроенные средства безопасности.

Вы хотите использовать cffile пометить с upload действие ( или эквивалент UDF), чтобы переместить временный файл в папку по вашему выбору. В этот момент вы получаете доступ к структуре, содержащей много информации. Обычно я "загружаю" во временный каталог для приложения, который должен быть за пределами webroot для безопасности.

На этом этапе вы захотите выполнить любую проверку файла, такую ​​как длина имени файла, тип файла, размер файла и т. Д., И удалите файл, если он не прошел проверку. Если он проходит все проверки, вы перемещаете его в конечный пункт назначения, который может находиться внутри корня веб-корня.

В вашем случае вы захотите проверить элемент структуры cffile clientFile исходное имя файла, включая расширение (которое вам нужно проверить, поскольку расширение не обязательно должно присутствовать и может иметь любую длину).

http://www.cfquickdocs.com/cf9/

После того, как вы загрузите файл, переменная "clientFileName" даст вам имя загруженного файла без расширения файла.

Единственный способ прочитать имя файла перед его загрузкой - использовать JavaScript для чтения и анализа значения (путь к файлу) в поле файла.

Другие вопросы по тегам