Solved

coldfusion expandpath use with recordset

Posted on 2010-11-11
13
488 Views
Last Modified: 2012-05-10
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

0
Comment
Question by:jameskane
  • 7
  • 6
13 Comments
 
LVL 52

Expert Comment

by:_agx_
ID: 34115552
>> <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#

0
 

Author Comment

by:jameskane
ID: 34119602
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

0
 

Author Comment

by:jameskane
ID: 34120012
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...
0
 
LVL 52

Accepted Solution

by:
_agx_ earned 500 total points
ID: 34121164
Verify the paths you're using at each step with DirectoryExists() and FileExists().  That's the only way to tell if the paths are valid.  Make sure to use the exact same paths though.

      ie <cfdirectory directory="#expandpath(".")&"\"&RECORDSET1.himages#" ....>

       <cfoutput>
       #expandpath(".")&"\"&RECORDSET1.himages#
      <cfif DirectoryExists("#expandpath(".")&"\"&RECORDSET1.himages#")>
          exists
       <cfelse>
            does not exist
       </cfoutput>

Also, dump #mylist# to verify it actually contains results.  If it's empty, that would explain why nothing seems to be happening.
0
 

Author Comment

by:jameskane
ID: 34130614
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
0
 
LVL 52

Expert Comment

by:_agx_
ID: 34130931
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 :)
0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 

Author Comment

by:jameskane
ID: 34130961
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 !!

0
 

Author Closing Comment

by:jameskane
ID: 34130968
THANKS !!
0
 
LVL 52

Expert Comment

by:_agx_
ID: 34131018
>> 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>
0
 

Author Comment

by:jameskane
ID: 34131404
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
0
 
LVL 52

Expert Comment

by:_agx_
ID: 34131804
>> <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#")  />
0
 

Author Comment

by:jameskane
ID: 34131815
Fantastic !!

Don't die !!!

I need you !!

very many thanks

james
0
 
LVL 52

Expert Comment

by:_agx_
ID: 34131835
ROFL ;-)  
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Hi, I will be creating today a basic tutorial on how we can create a Mail Custom Function and use it where ever we want. The main advantage about creating a custom function is that we can accommodate a range of arguments to pass to the Function and …
CFGRID Custom Functionality Series -  Part 1 Hi Guys, I was once asked how it is possible to to add a hyperlink in the cfgrid and open the window to show the data. Now this is quite simple, I have to use the EXT JS library for this and I achiev…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

863 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

27 Experts available now in Live!

Get 1:1 Help Now