Удалить несколько строк по имени файла, используя Coldfusion

У меня есть таблица в форме, которая заполняется списком имен файлов из базы данных. У каждой строки в таблице есть флажок. Я хотел бы иметь возможность проверить несколько строк в таблице, а затем отправить форму. После отправки каждая строка базы данных будет удалена на основе проверенного имени файла. Мне также нужно было бы иметь возможность удалить этот файл с сервера. Я использую ColdFusion и знаю, что для этого потребуется какой-то тип cfloop, но я не уверен, что это лучший способ сделать это.

Вот код для формы.

<cfform name="mainform" 
   action="deletingFiles.cfm?action=deleteDoc&teacherid=#url.teacherid#" method="post">

    <table border="0" width="50%"  id="product-table">
    <tr>
        <th>Check</th>
        <th> Description </th>
        <th>Date</th>
    </tr>
    <cfoutput query="delete">
    <tr>
        <td><input type="checkbox" name="DeleteID" value="#file_name#"></td>
        <td><a href= "deletingFiles.cfm?action=editDoc">#description#</a></td>
        <td>#DateFormat(date, "mmm-dd-yyyy")#</td>  
    </tr>
    </cfoutput>
    </table>

    <center>
        <button name="passchk" class="button blue" type="submit" >
            <p>&nbsp;&nbsp;Delete Checked Items&nbsp;&nbsp;</p>
        </button>
    </center>
</cfform>

Это мой код для удаления файлов из базы данных и с сервера. Прямо сейчас он удалит только один файл.

<cfif URL.action is "deleteDoc">
    <cfquery name="deleteDoc" datasource="test" username="" password="">
        delete from testdoc where file_name = '#form.DeleteID#'
    </cfquery>

    <cffile action = "delete" 
        file = "f:\inetpub\wwwroot\test\#form.DeleteID#">
</cfif>

Заранее благодарю за любую помощь, которую вы можете оказать!

1 ответ

Решение

Основной ответ что-то вроде:

<!--- This performs SQL delete even if there is no corresponding file --->
<cfquery name="deleteDoc" datasource="test" username="" password="">
   delete 
   from testdoc 
   where file_name IN (<cfqueryparam cf_sql_type="varchar" 
        value="#form.DeleteID#" list="yes">)
</cfquery>


<cfloop index="i" list="#form.DeleteID#">

   <!--- This code is vulnerable to attacks consider filtering out input --->
   <cffile action = "delete" 
      file = "f:\inetpub\wwwroot\test\#i#">

</cfloop>
Другие вопросы по тегам