Загрузка имен файлов с моими изображениями в мою таблицу базы данных

У меня проблема с загрузкой или просмотром имен файлов моих изображений в таблице базы данных.

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

Мой вопрос: поскольку одновременно загружается несколько файлов, нужно ли мне делать cfloop для вставки cfquery, чтобы захватить и вставить имена в мою базу данных? Моя попытка кода ниже. Выгрузка работала нормально, но на части вставки давится. Как вы думаете, в чем может быть проблема?

<cfparam name="form.fileUpload3" default="">
<cfif len(trim(form.fileUpload3))>
   <cffile action="uploadall" 
      fileField="fileUpload3" 
      destination="#cookie.c.webpathmultipleimages#" 
      accept = "image/jpeg, image/png, image/jpeg" 
      nameconflict="makeunique">

   <!---This is where i'm running into my issue--->
   <cfloop INDEX="i" LIST="#Form.fileUpload3#">
      <cfquery name="addtoimage">
         insert into image (imaid, imacomid, imaname) 
         Value (
           '00',
          '#cookie.communityID#',
          '#file.clientfile#'
         )
      </cfquery>
</cfif>

person user1824615    schedule 23.09.2019    source источник
comment
Да, вам нужно поместить это в какую-то петлю. Также используйте <cfqueryparam> для защиты от SQL-инъекции.   -  person James A Mohler    schedule 23.09.2019
comment
Чтобы увидеть, что происходит, замените тег cfquery на тег cfoutput. Также подозрительным выглядит просмотр списка без атрибута index.   -  person Dan Bracuk    schedule 23.09.2019
comment
SQL неверен. Должны быть ценности, а не ценность?   -  person haxtbh    schedule 23.09.2019
comment
Описание заглушки на участке вставки очень неоднозначно. Что на самом деле происходит? Если вы получаете сообщение об ошибке, отредактируйте свой вопрос, включив в него полное сообщение об ошибке. Также просмотрите документацию по cffile action = uploadAll. Он возвращает массив структур, содержащих информацию о файле. Вам нужно пройти по этому массиву, а не по полю формы.   -  person SOS    schedule 23.09.2019


Ответы (1)


Cffile возвращает массив, но вы использовали цикл со списком. Итак, вы получили ошибку. Попробуйте это с циклом массива.

<cfif len( form.image )>
    <cffile action="uploadall" filefield="image" 
        destination="#ExpandPath('.\uploadImages\')#" 
        result="fileName" 
        nameconflict="makeunique">
    <cfloop array="#fileName#" index="image">
        <cfquery name="imageUpload" datasource="uploadMultipleImage">
            insert into uploadImage (imageName) 
            values 
            ( 
               <cfqueryparam value="#image.serverfile#" cfsqltype="cf_sql_varchar">
            )
        </cfquery>
    </cfloop>
</cfif>
person S J kali    schedule 24.09.2019
comment
Cffile возвращает формат массива. Но вы использовали его в цикле списка. Итак, вы получили ошибку. Вы пытаетесь использовать цикл с массивом. - person S J kali; 25.09.2019
comment
Не забудьте заключить запросы в транзакцию. - person SOS; 08.10.2019