Coldfusion, используя GetHttpRequestData, для хранения и обработки файлов - PullRequest
0 голосов
/ 25 июля 2010

У меня есть плагин для загрузки файлов JQUERY, который позволяет пользователям загружать файлы на сервер Coldfusion. Плагин отправляет файлы на сервер таким образом, что я должен использовать GetHttpRequestData () для содержимого файлов. Вот что я имею до сих пор в отношении обработки данных файла:

<cfparam name="URL.qqfile" type="string">
<cfset x = GetHttpRequestData()>
<cffile action="write" output="#x.content#" file="c:\temp\#URL.qqfile#">

Это работает, и это хорошо, но я не могу перейти к следующему шагу.

Что я хочу, чтобы произошло следующее: А. Определите расширение файла. Б. Если это допустимый ext, определенный моим приложением, (JPG, PNG, PDF, DOC, DOCX и т. Д.) Загрузите его в правильный каталог на сервере. Затем удалите временный файл выше C. Используйте CFIMAGE, чтобы сделать миниатюру, если загруженный файл был Image

Как я могу выполнить вышеперечисленные шаги A-C с проблемой GetHttpRequestData?

Спасибо

1 Ответ

3 голосов
/ 25 июля 2010

Несколько советов:

  • Посмотрите на структуру результата GetHttpRequestData() через <cfdump>.
  • Вытащите необходимые заголовки, обратившись к этой структуре. Заголовок Content-Type обычно содержит материал, который вы хотите знать. Вы можете использовать функции List (то есть ListLen(), ListFirst(), ListLast(), ListRest() с соответствующими символами-разделителями) для простого анализа строки.
  • Всегда используйте StructKeyExists() для защиты от отсутствующих частей структуры. Никогда не принимайте как должное что-либо, что "как правило" кажется в этой структуре.
  • Не следует слепо доверять расширениям файлов или заголовку Content-Type. Также просмотрите первые несколько байтов загруженного файла и сравните их с белым списком, чтобы подтвердить тип файла.
  • Взгляните на <cffile action="upload">.
  • Опционально, выполняет тест дискового пространства , чтобы оценить, не загружены ли загруженные данные на сервер, или ввести ограничения другим подходящим для вас способом.
  • Прочитайте документацию <cfimage>. Не может быть , что трудно использовать для создания миниатюр.
...