Solved

Delete multiple files with CFFILE

Posted on 2006-07-12
9
322 Views
Last Modified: 2013-12-24
I have a page which shows a list of images in a table,
output from a cfdirectory function.

I currently have it working with radio buttons - select one image,
click delete button, and form processes back to same page, performing and confirming the deletion.

I want to change this to use checkboxes, and allow multiple deletions.
Currently, each radio button is a field called 'delete' with the name of the image
as the value. The name is passed to the delete function as #form.delete# ... works great!

However, when I change it to checkboxes, the value of #form.delete# comes through as multiple file names separated by a comma.

How can I take the value "c:/domains/path/images/filename.jpg, filename2.,jpg, filename3.jpg" and separate out all the filenames - basically trim off everything including the last /, then separate the remaining string by commas, removing spaces.

THEN I need to somehow loop the delete function, running through each of the filenames.

any suggestions?
0
Comment
Question by:MichaelEvangelista
  • 5
  • 3
9 Comments
 
LVL 18

Expert Comment

by:Plucka
Comment Utility
MichaelEvangelista,

Easy!

<cfloop index="file" list="#form.delete#">
    <cffile action="delete" file="#listLast(file, "/")#" />
</cfloop>

So you are looping over the list of names, then getting for each name the last element in the list where the delimiter is a "/"

Make sense?

Regards
Plucka
0
 

Author Comment

by:MichaelEvangelista
Comment Utility
Yes and no....

If you look at my example, the path comes through as one big long path string with a comma separated list after the last /

so it is like

"C:/domains/thissite.com/wwwroot/images/img1.jpg, img2.jog, img3.jpg"

SO... I think I need to first cut off everything up to that last /, then separate by comma from what is left. Does that make sense?
0
 
LVL 18

Expert Comment

by:Plucka
Comment Utility
No,

My example will work just fine.

Try it

Regards
Plucka
0
 

Author Comment

by:MichaelEvangelista
Comment Utility
thanks, Plucka - but I must not be doing it right.
I actually have 3 delete functions, as this is a photo gallery type setup,
I am deleting from 3 seprate folders.

I changed this

 <cfoutput>
   <cffile action="Delete" file="#imagesPath#original/#form.delete#">
   <cffile action="Delete" file="#imagesPath#full/#form.delete#">
   <cffile action="Delete" file="#imagesPath#thumb/#form.delete#">
  </cfoutput>

to this

<cfloop index="file" list="#form.delete#">
  <cfoutput>
   <cffile action="Delete" file="#imagesPath#original/ #listLast(form.delete, "/")#">
   <cffile action="Delete" file="#imagesPath#full/#listLast(form.delete, "/")#">
   <cffile action="Delete" file="#imagesPath#thumb/#listLast(form.delete, "/")#">
  </cfoutput>
</cfloop>

**But I still get this error:

The destination "c:/domains/mredesign.com/wwwroot/MREcfCMS/images/original/ sampleJPG5.jpg,stress1.jpg" specified in the CFFILE tag is invalid.

See what I mean...?

That full path is coming from the variable #imagespath#...  but the filenames are still comma separated.
0
Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

 
LVL 15

Expert Comment

by:tim_cs
Comment Utility
Just a slight variation on what Plucka had that might work for you.


<cfloop index="file" list="#listLast(form.delete, "/")#">
  <cfoutput>
   <cffile action="Delete" file="#imagesPath#original/#file#">
   <cffile action="Delete" file="#imagesPath#full/#file#">
   <cffile action="Delete" file="#imagesPath#thumb/#file#">
  </cfoutput>
</cfloop>
0
 
LVL 18

Accepted Solution

by:
Plucka earned 250 total points
Comment Utility
Sorry

Use the wrong variable in the listLast. This works.

<cfset form.delete = "C:/domains/thissite.com/wwwroot/images/img1.jpg, img2.jog, img3.jpg" />
<cfset imagesPath = "C:/domains/mredesign.com/wwwroot/MREcfCMS/images/" />

<cfloop index="fileName" list="#form.delete#" delimiters=",">
    <cfoutput>#imagesPath##trim(listLast(fileName, "/"))#<br /></cfoutput>
</cfloop>

NOTE: I added the trip as your list seems to have spaces.

This displays them so you can change the cfoutput for

<cfloop index="fileName" list="#form.delete#" delimiters=",">
   <cffile action="Delete" file="#imagesPath#original/ #listLast(fileName, "/")#">
   <cffile action="Delete" file="#imagesPath#full/#listLast(fileName, "/")#">
   <cffile action="Delete" file="#imagesPath#thumb/#listLast(fileName, "/")#">
</cfloop>

NOTE: You don't need the <CFOUTPUT around the <CFFILE
0
 

Author Comment

by:MichaelEvangelista
Comment Utility
perfect, thank you!
( except.. there is a space in your code after original/ in the first cffile, no prob to fix.)

NOW... how can I tell how many files were deleted?
I need to show the number of files on the confirmation.

Also, how can I tell how many checkboxes are checked on the initial page, with js or cf? I would like to show a message - Delete *4* files?

Here is the page now...
http://tinyurl.com/omlyl

thanks!


 
0
 

Author Comment

by:MichaelEvangelista
Comment Utility
OOPS you have to be logged in to see delete.
Click log out, then enter superadmin / superadmin,
then go to 'image list'


http://tinyurl.com/omlyl


sorry
0
 

Author Comment

by:MichaelEvangelista
Comment Utility
GOT the loop count working, so... good to go... thanks!!!
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Suggested Solutions

A web service (http://en.wikipedia.org/wiki/Web_service) is a software related technology that facilitates machine-to-machine interaction over a network. This article helps beginners in creating and consuming a web service using the ColdFusion Ma…
In our day to day coding, how many times have we come across a necessity to check whether a URL is a broken link or not? For those of you that answered countless and are using ColdFusion like myself, then this article is for you.  It will show yo…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now