Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

coldfusion expandpath use with recordset

Posted on 2010-11-11
13
Medium Priority
?
503 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
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
LVL 52

Accepted Solution

by:
_agx_ earned 2000 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
 

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

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

Question has a verified solution.

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

The technique is by far very Simple! How we can export the ColdFusion query results to DOC file?  Well before writing this I researched a lot in Internet but did not found a good Answer anyways!  So i thought now i should share my small snippet w…
Today, I was working on some optimization and spam-stopping techniques when I encountered Ben Nadel's post to reduce spam feature using Math (http://www.bennadel.com/blog/197-How-I-Stop-Spammers-On-My-ColdFusion-Blog.htm). While this method is not o…
Integration Management Part 2
This lesson discusses how to use a Mainform + Subforms in Microsoft Access to find and enter data for payments on orders. The sample data comes from a custom shop that builds and sells movable storage structures that are delivered to your property. …

971 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