Ben Nadel
On User Experience (UX) Design, JavaScript, ColdFusion, Node.js, Life, and Love.
I am the chief technical officer at InVision App, Inc - a prototyping and collaboration platform for designers, built by designers. I also rock out in JavaScript and ColdFusion 24x7.
Meanwhile on Twitter
Loading latest tweet...
Ben Nadel at cf.Objective() 2009 (Minneapolis, MN) with:

My First ColdFusion 8 CFFTP Experience - Rocky But Triumphant

By Ben Nadel on
Tags: ColdFusion

Yesterday, I performed my first ever ColdFusion CFFTP task. I've needed to perform FTP tasks from ColdFusion before but required sFTP functionality, which was only added in ColdFusion 8. As such, until now, I have only ever used third-party utilities. I got the ColdFusion 8 secure FTP to work, but it took me a while to figure it out all. I am sure others will run into similar road blocks, so I thought I'd share my learnings.

The first thing we want to do is create a large test file to upload (PUT) to our FTP account:

  • <!--- Get the file name of this test file. --->
  • <cfset strFilePath = ExpandPath( "./test.txt" ) />
  •  
  • <!---
  • Create a really large file. We need to do this because a
  • small file will be uploaded no matter what the timeout it
  • on the CFFTP.
  • --->
  • <cfsavecontent variable="strText">
  • <cfloop index="intI" from="1" to="100000" step="1"
  • >This is a really large file with a massive amount of text.
  • </cfloop>
  • </cfsavecontent>
  •  
  • <!--- Write the text to the test file. --->
  • <cffile
  • action="write"
  • file="#strFilePath#"
  • output="#strText#"
  • />

Here, we are just creating a file path (to be used throughout this example) and writing about 6 MB of data to it. It is important that the file be large because that's when things get a little bit more exciting.

The next thing we need to do is define our connection properties. We could do this inline with the ColdFusion 8 CFFTP tag, but using the AttributeCollection gives us the ability to cache the connection information in our site's configuration mechanism:

  • <!--- Set up the FTP configuration. --->
  • <cfset objFTPProperties = {
  • Server = "****************",
  • Port = "***",
  • Username = "bnadel",
  • Password = "******",
  • Secure = true
  • } />

Ok, now that we have our test file and our sFTP configuration object in place (for use with the tag's AttributeCollection), let's go ahead and try to upload (PUT) the file to the remote FTP server:

  • <!---
  • Now that the file has been written, we need to FTP it.
  • Let's create a connection object that will be used for
  • the following FTP commands.
  •  
  • When we name this connection, "objConnection", ColdFusion
  • caches the connection and allows us to execute future FTP
  • commands on this connection without passing in login
  • credentials or configuration.
  • --->
  • <cfftp
  • action="open"
  • connection="objConnection"
  • attributeCollection="#objFTPProperties#"
  • />
  •  
  • <!--- "Put" the SQL file to cached connection. --->
  • <cfftp
  • action="putfile"
  • connection="objConnection"
  • localfile="#strFilePath#"
  • remotefile="/home/bnadel/#GetFileFromPath( strFilePath )#"
  • transfermode="auto"
  • />
  •  
  • <!--- Close the connection. --->
  • <cfftp
  • action="close"
  • connection="objConnection"
  • />

There's a couple of things going on here. First, we are naming our sFTP connection, "objConnection." By doing this, it gets ColdFusion 8 to cache to the connection to the FTP server. This allows us to execute additional FTP commands on the cached connection without using our configuration attributes. That is why only the OPEN command uses the AttributeCollection; the PUT and CLOSE commands simply refer to the name of the cached connection.

Simple enough, right? Unfortunately, this does not work. When running the above code, ColdFusion throws the following exception:

An error occurred during the sFTP putfile operation. Error: putFile operation exceeded TIMEOUT. java.io.IOException: putFile operation exceeded TIMEOUT.

Ok, that make sense; I'm uploading a 6 MB file and the default timeout for FTP commands is 30 seconds.

To fix this, I went to increase the timeout of the PUT command to 300 seconds (5 minutes):

  • <!---
  • "Put" the SQL file to cached connection. This time, put
  • a 5 minute timeout on the PUT command. This should be more
  • than enough to handle the file size.
  • --->
  • <cfftp
  • action="putfile"
  • connection="objConnection"
  • localfile="#strFilePath#"
  • remotefile="/home/bnadel/#GetFileFromPath( strFilePath )#"
  • transfermode="auto"
  • timeout="300"
  • />

The connection is really fast so 5 minutes should be no problem for 6 MB. However, when I integrated this PUT file with the above example, I got the same exact error:

An error occurred during the sFTP putfile operation. Error: putFile operation exceeded TIMEOUT. java.io.IOException: putFile operation exceeded TIMEOUT.

Maybe 5 minutes wasn't enough. I tried pumping it up to 8 minutes. Still no luck.

After pouring over the ColdFusion live docs for a while, it suddenly occurred to me: the timeout attribute doesn't go on the PUT command. I don't know if this is true for one-off commands, but when we are using a ColdFusion cached connection (named connection), the Timeout attribute must be included in the OPEN command. This way, the Timeout will define the timeout of all commands executed on that cached connection.

So, no problem, I went ahead and put the Timeout in the OPEN CFFTP command:

  • <!---
  • Now that the file has been written, we need to FTP it.
  • Let's create a connection object that will be used for
  • the following FTP commands.
  •  
  • This time, let's move the TimeOut property to the OPEN
  • command. This will put the timeout property into our
  • cached connection object for use on all commands.
  •  
  • When we name this connection, "objConnection", ColdFusion
  • caches the connection and allows us to execute future FTP
  • commands on this connection without passing in login
  • credentials or configuration.
  • --->
  • <cfftp
  • action="open"
  • connection="objConnection3"
  • timeout="300"
  • attributeCollection="#objFTPProperties#"
  • />
  •  
  • <!--- "Put" the SQL file to cached connection. --->
  • <cfftp
  • action="putfile"
  • connection="objConnection3"
  • localfile="#strFilePath#"
  • remotefile="/home/bnadel/#GetFileFromPath( strFilePath )#"
  • transfermode="auto"
  • />
  •  
  • <!--- Close the connection. --->
  • <cfftp
  • action="close"
  • connection="objConnection3"
  • />

I was feeling confident when I refreshed the page. As it was running, I monitored the progress of the FTP upload using FileZilla. Every few seconds, I would refresh the remote directory listing in FileZilla to see how big the file size was. When it got to 6 MB, I was excited - it has worked! But then, I was shocked to switch back to the web page and find the following error:

The request has exceeded the allowable time limit Tag: cfftp. The error occurred on line 210. An error occurred during the sFTP putfile operation. Error: putFile operation exceeded TIMEOUT. java.io.IOException: putFile operation exceeded TIMEOUT

When I saw the line:

putFile operation exceeded TIMEOUT

... I assumed the FTP just timed out again. So I increased the Timeout value and ran it again. And, once again, the same problem - the file finished uploading according to FileZilla, but the page kept reporting that the PUT command timed out. What was going on? I started looking at the log files and messing with the timeout value and going back over the documentation.

What had I missed?!? It seemed to be both working and failing at the same time?

Then it occurred to me! The above error is actually telling us two things: the PUT file exceeded the timeout and the request had exceeded the allowable time limit. Of course! The request! This time, it wasn't the FTP command that was timing out, it was the page itself. What was happening was that the ColdFusion sFTP PUT command was finishing properly, but when it returned, the executing page timed out.

The fix for this was simple:

  • <!---
  • Give the page some extra time to execute since we are going
  • to be executing some large FTP commands.
  • --->
  • <cfsetting requesttimeout="300" />

By increasing both the timeout of the cached CFFTP connection as well as the timeout of the page, everything went smoothly.

So, it was a bit of a rocky start with ColdFusion 8's CFFTP tag, but once I got all the kinks ironed out, I had some pretty powerful functionality.

I won't bother putting this in the example, but after I was done testing, I moved this into a CFThread tag so that it could run asynchronously as part of a list of scheduled tasks. By putting the CFFTP command in a CFThread, it eliminated the need for the CFSetting tag. ColdFusion threads launched using CFThread do not have a timeout; therefore, only the timeout of the CFFTP connection needs to be considered.




Reader Comments

I have a small nitpick:
"There's a couple of things going on here. First, we are naming our sFTP connection, "objConnection." By doing this, it gets ColdFusion 8 to cache to the connection to the FTP server."

The way you wrote this makes it seem like naming your connection "objConnection" is doing something magical. Maybe it's the use of the quotes. I also don't think it's a 'caching' mechanism as much as it is a naming of a thread. Connection is an optional thing, but if you don't supply a connection name, CF will make one for itself.

Quote from the CFDocs: Name of the FTP connection. If you specify the username, password, and server attributes, and if no connection exists for them, ColdFusion creates one. Calls to cfftp with the same connection name reuse the connection.

Reply to this Comment

The biggest thing I ran into when I upgraded to CF 8 was that CF 8 required the connection attribute but the error you get without it "Null, Null" doesn't give you a clue that that is the problem.

Reply to this Comment

@Todd,

I was just referencing some of the documentation:

When you establish a connection with cfftp action="open" and specify a name in the connection attribute, ColdFusion caches the connection so that you can reuse it to perform additional FTP operations. When you use a cached connection for subsequent FTP operations, you do not have to specify the username, password, or server connection attributes. The FTP operations that use the same connection name automatically use the information stored in the cached connection. Using a cached connection helps save connection time and improves file transfer performance..... Changes to a cached connection, such as changing retryCount or timeout values, might require reestablishing the connection.

Maybe I am using weird wording, but I was trying to get the above sentiment across. And, as I am new to the CFFTP world, I am not aware of all the ins-and-outs.

@Ian,

Yeah, the Null Null error on anything is frustrating :)

Reply to this Comment

Thanks for writing up your experience with this. I just migrated to CF 8 and had this exact problem. Your instructions on solving it saved me a lot of time figuring it out.

Reply to this Comment

To Todd and other readers, the purpose of naming your connection is so that you actually know which connection to refer to when making calls (e.g. lets say you have multiple FTP calls happening simutaneously). If you allow CF to create/name the call, you wont know which one to refer to during multiple FTP calls.

HTH,
Tom

As always, thanks for figuring this out for us!

Reply to this Comment

Hi Ben

I was reading this post now and I saw a reference to the "retryCount" property of CFFTP.

I did some research into this and I must admit the documentation relating to this property is very minimal.

What I am wondering is:

1) Does this ONLY apply to the "open" action of CFFTP or other tags, as I've only seen it referenced in the "open" action.

2) If so, does this simply ensure that if a connection can't be established, that it tries [retrycount] number of times to establish the connection
OR
Does this mean that ANY CFFTP action attempt that fails (e.g. action="putfile") will retry [retrycount] number of times??

Any idea?

I was just laying in bed thinking about how to handle FTP file resumes if a file upload should get disrupted somehow and then I saw this post and reference to the "retrycount" property and was wondering if this is what I need? :)

Thanks

Reply to this Comment

Thanks Ian for your post. you saved me a lot of hair,
ie. The biggest thing I ran into when I upgraded to CF 8 was that CF 8 required the connection attribute but the error you get without it "Null, Null" doesn't give you a clue that that is the problem

Reply to this Comment

@Leigh,

I am confused as to what you are asking. This post was about FTP, but the link you listed was about HTTP. Are you asking about timing out in FTP or HTTP?

Reply to this Comment

@Leigh

Dude that's insane to have such a huge XML file, especially since you are just reading it. Why don't you just generate your XML file from a database? It would save you so much processing time as 400 megs of XML is really insane I have seen some huge XML files but 400? Dude you need to rethink your structuring a little bit better I know that is killing your server when you request that file.

Reply to this Comment

Hi All,

I should be a bit more specific.

I am looking for a file transfer solution through CF to upload a single file at a time (20-100megs). Looks like i'll use CFFTP to do after reading some posts.

The article i posted was mentioning issues with IIS and Windows server 2003 which i thought might effect the CFFTP but i could be wrong?

I've had trouble in the past with CF timing out when reading large xml files, but haven't attempted to copy large files at all.

I have a current client system that generates a massive XML file of property data (full push) which came to 400meg! This is a seperate issue i face in CF as i believe a COM object on a windows server is a solution after doing some research on how to read large files. *The xml is also encased inside a zip file full of images.

I've found i can only read into CF around 3.7 meg of XML data in 10mins before it times out.

Leigh

Reply to this Comment

Is there anything else that must be set-up/configured to allow ColdFusion 8 to establish a secure FTP connection? I have set-up multiple tests with various code configurations, each test results in a "User Authentication failed" error. I can connect to the secure FTP server using CoreFTP or psFTP which confirms my user parameters, server, and port are correct.

Reply to this Comment

Handy article..Ben

you may also want to set the fingerprint parameter to the cfftp tag for SFTP..

<cfsetting requesttimeout="600" />

<cfftp action = "open"
username = "***"
connection = "**********"
password = "*********"
fingerprint = "40:12:77:67:43:bb:2f:71:06:b8:3b:b7:ee:v5:ee:31"
server = "111.11.111.111"
secure = "yes"
timeout="300">

use Bitvise Tunnelier to get the fingerprint for your SFTP login

Reply to this Comment

Ben,

Not sure if you're familiar with mainframe files or not, but here goes. One of our processes FTP's a file to the mainframe, but one caveat is that we have to pre-allocate some of the parameters for the file, with CF8 they introduced a handy new action called "site" which would allow you to put in syntax to be run on the ftp server, so in this instance I'm running the following:

<cfftp connection="Myftp"
action="site"
actionparam="LITERAL SITE LRECL=2088 RECFM=FB CYLINDERS PRIMARY=3 SECONDARY=1">

Works great in CF8, the problem is that our production environment is still running CF7 and, unfortunately, we do not have plans to upgrade in the near future. Do you know of any similar commands in CF7 that I could use to accomplish this task?

Any guidance would be much appreciated.

Chuck

Reply to this Comment

@Chuck,

Unfortunately, that is beyond my understanding. I've never even seen the Site feature before. If I come across anything, I'll let you know.

Reply to this Comment

Hi Ben! I do not if i should ask this question or not, but i am bit in complexity.

Can we use cfftp to upload multiple files and insert the same in the database too at the same time.

is This possible.

Reply to this Comment

Ben,
I've been able to make the ftp connection to the server ok. but I'm having trouble uploading a file to a remote server. I have the correct path on the remote server and that looks ok. what I'm having trouble with is I use a form to look up the file I want to upload, which give a honking long filename, nothing like the real filename. I always get an error that says it can't make the file. any suggestions on what's going on here?

Reply to this Comment

Terri,

Just double check you have the correct permissions on the folder..sometimes easy to overlook

You could test with a normal upload function to see if you can write files ok

Reply to this Comment

@Terri,

If it is giving you a really long file name, it's probably giving you the .TMP file path (extracted from the FORM). What you need to do is actually save the file to disk first (using CFFILE) and then upload the destination file.

Reply to this Comment

Chris and Ben,

Have you guys tried to secure ftp into a unix box using just the username and pub/pivate key access methods?

Reply to this Comment

Tony

I use the secure ftp to transfer video files from a windows server to a linux server and this works like a dream..

I do pass in the fingerprint parameter...but I guess the determining factor is the sftp service you have setup on your unix box as to how you can get this to work with the cfftp tag.

Reply to this Comment

@Ben, ok thanks....

@Chris, are you using the "username/key" instead of "username/password"???

Reply to this Comment

Thanks for the post. I spent like 3 hours trying to figure out why it kept on timing out. But it was worse for me, on our Dev server it worked right away, but on the test I kept on getting a read time out error. But when I put the longer timeouts in the open connection and on the calling page seems to have solved the problem.

Reply to this Comment

@Roman,

Glad you got it working; ColdFusion is sometimes funny that way, in that it won't timeout while a 3rd party interaction is executing; it will only timeout once that process has returned.

Reply to this Comment

Perhaps this has been mentioned before on your blog but I didn't have luck Googling for it. I just resolved an issue that's pretty trivial but misleading and figured I'd put it here so someone else can find the solution.

So, I had FTP code written that worked perfectly fine. I know I hadn't changed the code - but I had changed related code. Basically the code would connect, change to a directory, put a file, close the connection. Simple, right? Well, it wasn't working. It basically connected and timed out -- similar to what Ben talks about. However, the circumstances were different than what Ben talks about. I connected to the FTP server with FileZilla and found out the file was created but it had a filesize of 0 bytes. Long story short, I upgraded to Windows 7 from Windows Vista and Windows 7 Firewall hates ColdFusion FTP out of the box -- it's fine with making a connection and creating a file.. but sending file content gets blocked. I added a rule and all was well.

Reply to this Comment

@Josh Olson,

What did you have to add as a rule in Windows 7 firewall to open up cfftp? I'm having a similar problem where I can't download files using cfftp on a Windows 7 machine unless the firewall is turned off.

I can get the files just fine using ftp from the command line. The first time I tried the windows 7 firewall asked me and I opened it up, really wish it would do that when cfftp tries.

Reply to this Comment

Control Panel > Windows Firewall > Advanced Settings

Inbound Rules > New Rule

Program > Next

This program path: %SystemDrive%\ColdFusion\d\runtime\bin\jrun.exe > Next

Allow the connection > Next

Your preference > Next

Name: JRun Free Reign > Next > Finish

Repeat for Outbound Rules.

That's what I did on my development machine... which is obviously pretty open. For production, you'll probably want to go with Custom rule creation and set up ports for FTP (20, 21, etc.). For a complete list, there's this: http://www.iana.org/assignments/port-numbers and Google. :)

Good luck!

Reply to this Comment

@Josh Olson,

Thanks a bunch for the Firewall help.

Oh and keep up the great work Ben. I lost count how many times I've found an answer to a question or problem about Coldfusion on your site.

Reply to this Comment

I am using the following code to transfer files from one server to another and used it successfully in the past to transfer files of sizes close to 100 MB but I have recently been upgrading the code and having trouble getting back response once file is transferred. File do get transferred but coldfusion page keep showing the the same page as transfer is happening. If I stop the execution of page and then try doing it again, I start to get error page after long time with cflock errors. Do you have any idea why is it happening?

<cfftp
action="open"
server = "#request.Server#"
username = "#request.Username#"
password = "#request.Password#"
timeout = "3600"
connection = "ftpconnect"
passive="no"
stoponerror="yes" />

<cfftp action="existsdir" connection="ftpconnect" directory="#request.FTPDir#/#arguments.FileID#">
<cfif cfftp.returnValue eq 'no'>
<cfftp action="createdir" connection="ftpconnect" directory="#request.FTPDir#/#arguments.FileID#">
</cfif>

<cfftp action="existsdir" connection="ftpconnect" directory="#UploadDirectory#">
<cfif cfftp.returnValue eq 'no'>
<cfftp action="createdir" connection="ftpconnect" directory="#UploadDirectory#">
</cfif>

<cfftp
action="putfile"
connection="ftpconnect"
localfile="#SourceDirectory#\#arguments.FileToUpload#"
remotefile="#UploadDirectory#/#arguments.FileToUpload#"
transfermode="auto"
/>

<cfftp action="close" connection="ftpconnect">
<cflocation url="mainpage.cfm" addtoken="no">

Reply to this Comment

@Omer,

At a glance, nothing looks off. What kind of upgrades have you been making to the code?

Reply to this Comment

Chuck,

Thank you! Worked like a charm on the first attempt and really got our team around an ugly problem.

Sandra

Reply to this Comment

we have an ftp process that moves files from one server to another. I want to give the user the ability to browse the folder they want to ftp to the other server. I have not had any luck getting this to work. Since the folders are in different locations each time they want to ftp them it would be easier for the user to be able to browse to the folder and select it. I have tried letting the user select a file in the directory and then trying to read the directory, but ColdFusion just gives me a temporary folder to upload from. Is this a security feature of Windows?

Mike

Reply to this Comment

@Mike,

I am not sure I understand what's going on. How is the person browsing for the directory?

Reply to this Comment

Nice this worked perfectly fine for me.

and
@ Mike, please rephrase your problem as I would like to help answer it though I couldn't clearly visualize your problem

Reply to this Comment

I was using cf9 ftp functions do download files from an msftp server. Last month something changed on the remote server, now nothing downloads. I think the remote server may be using virtual directories now. When I make the connection and do a "listDir" its empty.

For some reason when cfftp logs in, it doesn't get forwarded into the correct directory. Getcurrentdir shows "/" and should show "/myusername"

Any Ideas?

Reply to this Comment

Thanks Ben. I had the same issue you mention in this post with CF9. After doing everything you mentioned, I still got the dreaded "Error: putfile operation exceeded timeout." error. I am using a named connection.

After some searching, I found http://www.webmasterkb.com/Uwe/Forum.aspx/cold-fusion/17299/CFFTP-Bug-in-8-0-1 (Kumar Chandan's post from 02 May 2008 09:48 GMT), which gave me the idea to add a timeout attribute to the putfile operation (in addition to the open operation). After adding this, it worked.

Going off of your example, here is the updated code:

  • <cfftp
  • action="open"
  • connection="objConnection3"
  • timeout="300"
  • attributeCollection="#objFTPProperties#"
  • />
  •  
  • <!--- Add timeout to putfile operation --->
  • <cfftp
  • action="putfile"
  • connection="objConnection3"
  • localfile="#strFilePath#"
  • remotefile="/home/bnadel/#GetFileFromPath( strFilePath )#"
  • transfermode="auto"
  • timeout="300"
  • />
  •  
  • <cfftp
  • action="close"
  • connection="objConnection3"
  • />

Reply to this Comment

When you first decide to start an online business, you will probably find it very overwhelming. wedding shoes bridal There are many aspects to deciding which is the best way for you earn an income with online marketing.The best way to market your any product burberry heart to get the most exposure is through your own website. This can be very challenging and sometimes confusing. The first thing you need to do is get a domain name for your wholesale designer purses website, and then you have to decide on a company to host your website. A lot of the hosting companies will provide coach belts templates included in your package for you to build your website on.If you already know how to build a website, carnival shoes you are away ahead of the game. If you do not, you now have the task of learning how to do it, or hire a web designer and programmer to do the job for you. This can be very expensive. You then need to decide which product or service you want to handbag or purse promote on your website, and decide how coach garnet satchel you want to handle payments, shipping, etc.Today, there is another option to setting up an online marketing business. Many entrepreneurs have discovered online turnkey business opportunities.Online turnkey business opportunities are ready to go businesses. All the complicated business programming is already done for you. The website pages are already loaded with product for you to sell, and all you have to do is download the entire website to http://www.versaceglasses-byversace.com versace bags your computer. You can be ready to operate your online ugg lynnea boots business on the same day, sometimes in an hour or less.Some turnkey business opportunities do charge a fee for start up, but others do not. Some require you to get your own domain name, but this is easy and very inexpensive. Having your own domain name also gives you more control over your website. Most of the turnkey businesses will tell you that marie osmond handbags you either need have them host your website, or they will tell you who they want you to use. This is still way less expensive, and of course way less time consuming than building your own website.When you make the decision that an online turnkey business is for you, there are several things you need to look for when deciding which one is best for you. There are many online turnkey businesses out there, you need to make sure that you are getting a business that is going to provide you with products and services that are in demand. This will make selling a lot easier for you.Before signing up for an online turnkey business, find out what the requirements are to join that company. It is always a good idea to thoroughly research several companies that are offering online turnkey businesses before deciding which one is best for you. You also need to make sure that the company you decide on offers ongoing support and training. This will help you to succeed in your endeavors.Having all these things covered will give you time to market your turnkey website. You will need to promote your products and promote your turnkey website. Once your website is in a really good position on search engines, you will see the money start to roll in.An online turnkey business will save you time, and give you a professional website to market products. Be patient, and work at promoting your turnkey website and soon your will have a wonderful profitable online business.To learn more about turnkey websites and a guide to other online business ideas, please visit us http://www.internet-opportunities-from-home.com/1978.html

I typically shy away from watching American Idol. I find watching peoples hopes dashed by 'judges' lynnea ugg akin to watching humans flayed by gladiators to the amusement of the dullard populace. Parenthetically, I wonder how the objectively questionable voices of legends: Louis Armstrong, Neil mbt mall Young, Bob Dylan or Robert Plant would survive the scrutiny of the bastions of talent assessment found in judges: Simon Cowell, Randy Jackson, and Paula Abdul. Paula Abdul. My automatic grammar checker is authentic gucci bags telling me that the sentence "Paula Abdul." on its own is a sentence fragment; I couldn't disagree with it more in this context. In fact, I find it spin shoes to be a full paragraph. While I find the show irksome, mustering the power to 'turn the buy headphones other cheek' is about as hard as turning to another channel and as such, I wholesale designer inspired handbags haven't, until recently, paid it much mind. However, when this show chose to wax moral, wireless audio headphones I perked up my ears because when a Fox Network program discusses morals, this is bound to be something I want to tune into. (Words fail to express the sarcasm of the previous sentence.) The Fox Network is the same network which brought you the tasteful tidbit "Who Wants to Marry a Millionaire?" and is the official station of George W. Bush and his war to eradicate weapons of mass destruction. (In a strange twist of fate, the largest [and only] weapon of mass destruction after the year 2000 in Iraq turned out to be George W. Bush himself.) This is the network that sought to sanction contestant Antonella Barba on American Idol after it was revealed she had some scandalous photographs found on the internet. Barba man purse was voted off the show, but it was her voice that was cited as the final cause. Nonetheless, American Idol has previously removed a contestant "Frenchie" after pictures surfaced of her on an adult pay site.A Google search of either girl will reveal l.credi handbags an onslaught of the related pictures as well as 50 pop up adds suggesting you need a larger penis, methods for fixing the problem and several contests you've won which should provide funds for any such programs. After closing the fog of pop ups, the pictures that emerged were at best Maxim or FHM worthy. To those not versed in the realm, Maxim and FHM are to Playboy and Penthouse as light-filtered-cigarettes are to cigars. My initial reaction to the pictures was flaccid causing me to momentarily rethink closing all the previous pop ups. After that moment I realized that I was unimpressed because it was clear to me that these pictures had absolutely nothing to do with the talent of the contestants. For the record, Frenchie has moved on to a http://www.chanels-handbags.com/chanel-clothing-chanel-bikini-c-6_7.html cheap chanel promising career on Broadway. Instead, these pictures had everything to do with our confused morals. Some will immediately protest: "the show is called American IDOL" -- emphasis on 'idol' -- and hence part of the criteria must be if such people are worthy of being idols. As soon as we open this can of worms, it's necessary for American Idol to somehow consider the morals of the contestants. Morals and ethics are complicated and I'm certain that the Fox Network lacks the acumen to address the issue. In fact, I find it very hard to determine if it was revealed that Barba mutilated puppies would it have received more or less press and attention? I hear the conservative drone say: "the children, the poor children, whatever will we do if they see those pictures?!" To such parents, I point out that what would happen to children if children watch the evening news? I will attend that point momentarily.Only in such a state of moral asymmetry could we even begin to ask these sorts of questions. Let's look at the issue. Pornography: bad, good, neither, both? Dr Phil's 'Occam's Razor' style argument on the topic goes like this: If you wouldn't want your daughter involved in porn, then why would you watch someone elses' daughter? Dr Phil, President Bush and the Fox Network are experts at providing short answers to complicated questions that sound reasonable and under scrutiny turn out to be faulty. At the risk of being guilty of the same thing I accuse Dr. Phil, the short answer to Dr. Phil is: I don't want my daughter to be a sanitation maintenance engineer (the politically correct term for garbage man/woman) but that doesn't stop me from taking my trash to the curb. However, let's take a deeper look at the issue, and to do so, we'll restrict the general porn issue to examining going topless at a beach. If anyone reading the rest of this article derives that I carte blanche advocate pornography, I invite them to reread the previous sentence.(An unremembered comedian [likely Bill Maher or Robin Williams] once quipped that to, the overly simplified criminal justice mantra, "three strikes and you're out" is the answer to gays in the military "four balls and you walk"?) I'd like to ask Dr. Phil if he'd let his daughter go topless on a beach. I suspect strongly that he'd say no. Then I'd like to ask him if he'd let his daughter go topless on a beach in Brazil where the practice is commonplace (certainly more common place) and considered about as common as walking around in a bikini. I suspect he'd still say no, but the question would have got him thinking (and hopefully you as well). People will hem and haw over this point but that's only because we're dealing with the cusp of what's currently considered 'ok'. Then I'd ask him if he'd let his daughter wear one piece swim suit (not a bikini). I suspect he'd say yes. Then I'd finally ask him, if he lived in the 1800's (when woman swam in the equivalent of a 'Burka') would he also let her wear a one piece swim suit? I'd like very much to hear his answer. Whether he says yes or no, he'd be forced to admit that his 'morals' have more to do with the time (society) he lives in than what is actually 'right or wrong'. Star Wars got it right when George Bush gawks: "You're either with us or against us" and Obe Wan Kenobi replies: "only the Sith believe in absolutes." It's my personal belief that the 'Sith' is a code for George Bush and the conservative lot (Sith = Simple Ignorant THeists).Thus, questions of moral propriety are very hard questions to answer, and I sure as hell don't want the Fox Network to even make the attempt. The question of where this moral confusion arose in the first place begs answering. I can only offer an answer in a form of an allegory of two presidents. First we have a story of an otherwise good president who had sex in the oval office; He was impeached. Next we have a story of a president who didn't have sex in the oval office and sent a nation to war to get rid of weapons of mass destruction which didn't exist. This president who sent thousands to their deaths for no reason at all was, was... was... Oh, nothing happened to him. The take home message of all this confusion is that morals are hard. You're going to have to turn off the TV and think about them if you want to have a chance of getting them right. http://www.burberry-bag-outlets.com burberry outlet In turn, the only take home message one can glean about the state of American morals from all this is that Americans are fine with boobs only so long as one doesn't post pictures of them on the internet and instead elects them to office.

As you can see, in the end equation Y = 280X, which means that Y, life coach jobs or the total cost is a function of the number of cousins, which is 'X'. Here the domain is the number of his cousins while the range mbt safiri chill is the value of total shopping cost, as a function of number of cousins that he buys clothes for!

Reply to this Comment

I have been reading this thread and it's comments for awhile now. I am still getting the exceeding time out error here is my code

  • <cfsetting requestTimeout="10000" />
  • <cfftp connection = "bCExport"
  • action = "open"
  • username = "user"
  • password = "pass"
  • server = "ftp.website.net"
  • timeout="300"
  • />
  •  
  • <cfftp connection = "bCExport"
  • action = "putfile"
  • localfile="#savePath##constantfileName#"
  • remotefile="/#constantfileName#"
  • transfermode="auto"
  • timeout="300"
  • />
  •  
  • <!--- Close connection --->
  • <cfftp connection = "bCExport"
  • action = "close"
  • />

Any idea why it is not working still?

Reply to this Comment

@Meensi, I tried adding and removing slashes but they are correct. Wouldn't I be getting a different error if the paths were incorrect?

Reply to this Comment

@Alexander, try adding passive=true

This was what caused me to keep getting timeouts when I was doing cfftp in the past.

  • <cfftp connection = "bCExport"
  • action = "putfile"
  • localfile="#savePath##constantfileName#"
  • remotefile="/#constantfileName#"
  • transfermode="auto"
  • timeout="300"
  • passive=true
  • />

Reply to this Comment

I tried running the code but I am getting an error on connection open command.
The error message is:
An error occurred while establishing an sFTP connection.
Verify your connection attributes: username, password, server, fingerprint, port, key, connection, proxyServer, and secure (as applicable). Error: java.net.ConnectException: Connection refused: connect.

I tried connecting to FTP using the same credentials using FTP client and it connected successfully. I guess my server doesn't support SFTP connections. What should I do to make my server support SFTP as well?

Reply to this Comment

Hey Ben,

I'm using cfftp to open a connection and put some files on a server.
Now I need to list some files and be able to download them, using the atribute action = getfile. What I intend to do is, when the user click the link, the 'Save as' dialog box opens, and allows to choose where to save the file, but in cfftp tag, I have to use the "localfile" to set file's destination. Do you know some way to make it work with the dialog box?

Thank you in advance!

Reply to this Comment

This is driving me nuts. I can make one connection to the SFTP server. Just one. Any further attempts to connect to it just hang until, well, forever, so far as I can tell. At least until I forcibly restart coldfusion. I know the hanging has lasted at least 36 hours, which I'm pretty sure is longer even than the underlying timeout in the JVM. That's about as long as I was willing to let it go.
Even using CFThread doesn't seem to make a difference. One SFTP connection, one time, then it's done.

Reply to this Comment

I need to do an SFTP using CF7 (I know). I see Ben says he used a third party utility. Is there a post about how to do that? Our production has not been updated to CF10 yet and I need to apply these SFTP changes now.

Thanks for any assistance.

Reply to this Comment

Post A Comment

?
You — Get Out Of My Dreams, Get Into My Comments
Live in the Now
Oops!
Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.