Avatar of jameskane
jameskane asked on

coldfusion expandpath use with recordset

I am using code to bulk upload images to a server. I works perfectly, but I need it to work with a 'dynamic' name for the folder with will receive the images. I would like some advice as to whether the approach is feasible - as I say it works for a given receiving directory name, but not for a dynamic directory name.

You will see in the code attached, that I have a recordset which selects one record and I am trying to use that result for the name of the receiving folder. I show in the code the two examples of where this approach is taken.

Advice needed as to whether this approach is correct or am I infringing some basic coldfusion rules. Plese remember that the overall approach does work when I hard wire in a directory name and also that the recordset and the output does work correctly in a simple test page

Thanks for some guideance

james
=========================================
THE RECORDSET

<cfquery name="Recordset1" datasource="abac">
SELECT *
FROM pagedata
WHERE ID = 41 
</cfquery>

====================================================
================================================
useage example 1
<cfset myDir = "#expandpath(".")#\<Cfoutput>#RECORDSET1.himages#</cfoutput>\" />

====================================================
usage example 2

<cfdirectory
action="list"
directory="#ExpandPath( './<cfoutput>#RECORDSET1.himages#</cfoutput>/' )#"
recurse="true"
name="mylist"
/>

Open in new window

ColdFusion Language

Avatar of undefined
Last Comment
_agx_

8/22/2022 - Mon
_agx_

>> <cfset myDir = "#expandpath(".")#\<Cfoutput>#RECORDSET1.himages#</cfoutput>\" />

There is no reason you can't use dynamic directory paths.  Though you do not need any of those cfoutput tags. Nesting also decreases readability IMO.  ie Instead use  

       <cfset myDir =  expandpath(".") &"\"& RECORDSET1.himages />

So when you say it doesn't work, what happens .. an error? The first thing to check is the the resulting values. Do they create a valid path?

         #expandpath(".")#
         #RECORDSET1.himages#
         #myDir#

ASKER
jameskane

Hi Agx, thanks again for helping me out. Below is the path that is being created. I note the space between teleimage and \himagesPeinture.  

D:\Inetpub\coin-des-artistes\teleimage \himagesPeinture

Initially it was  D:\Inetpub\coin-des-artistes\teleimage himagesPeinture, but I changed the value in the database from himagespeinture to \himagespeinture.

However, I am unable to get rid of the space.

I am attaching the relelvent bits of code, maybe you can see a way of getting rid of that space !! That should fix it !!

The program is not crashing, I am just not getting the images into the target folder which is himagespeinture. Again, everything works if I hard wire in the name of the folder, vrs taking the dynamic route.

thanks again, james
RENAMING.CFM page
---------------------------------------------------------------
<cfquery name="Recordset1" datasource="abac">
SELECT *
FROM pagedata
WHERE ID = 41 
</cfquery>

++++++++++++++++++++++++++++++++++++++++

<cfdirectory
action="list"
directory="#expandpath(".")&"\"&RECORDSET1.himages#" 
recurse="true"
name="mylist"
>

+++++++++++++++++++++++++++++++++++++++++++++++

This is for renaming the image files to a standard photo1.jpg, photo2.jpg etc...

<cfset imageNumber = 1>
Your files have be uploaded succesfully

<cfloop query="mylist">
     <cfif mylist.type eq "file">
          <cffile 
          action="move" 
          source="#mylist.directory#\#mylist.name#" 
          destination="#mylist.directory#\photo#imageNumber#.#listlast(mylist.name,'.')#">
          <cfset imageNumber = imageNumber + 1>
     </cfif>
</cfloop>


--------------------------------------------------------
page folderuploader_hdlr
---------------------------------------------------------
<cfquery name="Recordset1" datasource="abac">
SELECT *
FROM pagedata
WHERE ID = 41 
</cfquery>


<cfset myDir=expandpath(".")&"\"&RECORDSET1.himages />

==============================================================
<cfset variables.destination=expandpath(".")&"\"&RECORDSET1.himages />

Open in new window

ASKER
jameskane

Woops, I think the above analysis is not correct. Sorry for that. I used

<cfoutput> #expandpath(".")#
 #TRIM(RECORDSET1.himages)#
         </cfoutput>


in the renaming page to get the path - which showed the space problem. However, if I
use

 <cfoutput> #expandpath(".")# #TRIM(RECORDSET1.himages)#
         </cfoutput>

I do not get the space

Woops...
This is the best money I have ever spent. I cannot not tell you how many times these folks have saved my bacon. I learn so much from the contributors.
rwheeler23
ASKER CERTIFIED SOLUTION
_agx_

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
See how we're fighting big data
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
ASKER
jameskane

hI  again agx !

Well I have pinned this down now to the following :

<cfset myDir = "#expandpath(".")#\himagesPeinture\" />    THIS WORKS

<cfset myDir = "#expandpath(".")&"\"&RECORDSET1.himages#" /> THIS DOES NOT WORK

I have checked that  recordset1.himages  does give an output "himagesPeinture" - so its not that

?? syntax problem maybe ?

James
_agx_

Almost definitely a syntax problem. If you print out #myDir#  what are the values?

>> <cfset myDir = "#expandpath(".")&"\"&RECORDSET1.himages#" /> THIS DOES NOT WORK

I don't know what results that would produce, but the way I'd write it is:

         <cfset myDir = expandpath("./"& RECORDSET1.himages) />

Get rid of all the extra pound signs and quotes. They just confuse things :)
ASKER
jameskane

Got it Agx !!  

It was the  />  -- at the end of <cfset myDir = "#expandpath(".")&"\"&RECORDSET1.himages#" />... Should have been just > and not />.

Thanks for the tools you pointed to, without those I would have not been able to resolve it !!

James

PS... also thanks for  you past pointer to jquery !!!!  Its really fantastic. I am redoing the complete art school website with it - to maximize potential for the non tech owners to input the content themselves via database. This little problem came from this work !!

Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
ASKER
jameskane

THANKS !!
_agx_

>> It was the  />  -- at the end of

Hm... I don't think so.  It shouldn't make any difference. These 2 produce the same results. Though the 2nd is easier on the eyes ;-)

<cfset RECORDSET1.himages = "someFolder">
<cfset myDir = "#expandpath(".")&"\"&RECORDSET1.himages#" />
<cfoutput>#myDir#</cfoutput><br>

<cfset myDir = expandpath("./"& RECORDSET1.himages) />
<cfoutput>#myDir#</cfoutput>
ASKER
jameskane

you are right !  don't know how that came about !!!

BUT, a bit more experimentation and eventually - this REALLY works

<cfset myDir = "#expandpath(".")#\#recordset1.himages#\" />

James
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
_agx_

>> <cfset myDir = "#expandpath(".")#\#recordset1.himages#\" />

You realize you're killing me with the extra /'s # signs and quotes ;-)  But I admit not everyone cares for using "&" the way I do :)  

BTW: ExpandPath(".") returns a directory.  So you could simply write it as

<cfset myDir = expandpath("./#RECORDSET1.himages#")  />
ASKER
jameskane

Fantastic !!

Don't die !!!

I need you !!

very many thanks

james
_agx_

ROFL ;-)  
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.