Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Cold fusion code to download files (eg Word/Excel) from an FTP/WWW Site, and offer it for download.

Posted on 2004-08-31
10
Medium Priority
?
353 Views
Last Modified: 2013-12-24
First of all, is it possible for cold fusion to retrieve a file from an ftp/www site and then prompt the user to save/view that file from the brower? If so, can you provide brief code as an example. I have tried using the cfttp, cfftp and cfcontent tags to a limited degree of success. I can retrieve the file from the site, and also prompt the user to save the file, but it is usually garbled (looks like it has been converted into a string).

The reason behind this is to hide the original source of the files, as the source is protected and I do not wish the credentials to be hard coded into the link.

Thanks,
Shane.
0
Comment
Question by:Shane_Capper
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 4
10 Comments
 
LVL 21

Expert Comment

by:pinaldave
ID: 11949486
hello,
You have two Questions
1) FTP... it works and I have done it many times... the code is simple and the best one is on the web site of macromedia.
http://livedocs.macromedia.com/coldfusion/6.1/htmldocs/tags-p39.htm#wp1800554
There are two cat for ftp
i) you need to open connection.
ii) you need to use hte file operation of ftp..
regarding the code, if i will give you any code there will be no different then the code on web site....
2) second content is of file content...
let me show you small code for excel and you can do the same for word....
<cfquery datasource="MyDataSourceHere" name="qryAccessData">
     SELECT Field1, Field2, FieldN
          FROM AccessTable
</cfquery>
<cfheader name="content-disposition" value="inline;filename=AccessToExcelDump.xls">
<cfcontent type="application/msexcel">
<table border="1">
     <tr>
          <th>Field1</th>
          <th>Field2</th>
          <th>FieldN</th>
     </tr><cfoutput query="qryAccessData">
     <tr>
          <td>#qryAccessData.Field1#</td>
          <td>#qryAccessData.Field2#</td>
          <td>#qryAccessData.FieldN#</td>
     </tr></cfoutput>
</table>

you may not need the query and you can do it without that... also....
some things to read more about in the same line of ideas....
http://www.experts-exchange.com/Web/WebDevSoftware/ColdFusion/Q_20701038.html
http://www.experts-exchange.com/Web/WebDevSoftware/ColdFusion/Q_20918372.html

If you have any problem regarding ftp or any code problem let us know.
Regards,
---Pinal
0
 

Author Comment

by:Shane_Capper
ID: 11949541
Thanks for your quick response, but I dont think you really answered my question. I have successfully used code like yours above, but not when dealing with binary data (like a word doc). The code I was playing around with is below. It obviously doesnt work, but I'm not sure what I am doing wrong.

------------------------------------------------------------------------------------
<cfheader name="content-disposition" value="inline;file=word.doc">
<cfcontent type="application/msword">
 
<cfhttp url="http://www.webserver.com/myworddocument.doc" username="xxxxxx" password="xxxxx" port="80" method="GET" getasbinary="yes">
<cfoutput>#cfhttp.FileContent#</cfoutput>
------------------------------------------------------------------------------------
0
 
LVL 21

Expert Comment

by:pinaldave
ID: 11949564
Hello,
May be I have not answered your question...
I have not much used http...
though, I was wondering what is the error...or what is the output which you are not loooking for ...
Regards,
---Pinal.
0
What Is Blockchain Technology?

Blockchain is a technology that underpins the success of Bitcoin and other digital currencies, but it has uses far beyond finance. Learn how blockchain works and why it is proving disruptive to other areas of IT.

 

Author Comment

by:Shane_Capper
ID: 11949575
There is no real error message. What happens is IE prompts me to download the test.cfm page, but then complains it cant find it. Stange hey.
0
 
LVL 21

Expert Comment

by:pinaldave
ID: 11949734
just try this... for kicks... i am looking into this ... before I go to sleep ... it is pretty late here...
<meta http-equiv="Refresh" content="1;URL=download.cfm">

Just put it in the HEAD tags of your HTML document.  This will wait one second then try running download.cfm which has your CFHEADER and CFCONTENT tags.
0
 

Author Comment

by:Shane_Capper
ID: 11949751
Same thing happens. Thanks for your help, I appreciate this!
0
 
LVL 21

Accepted Solution

by:
pinaldave earned 750 total points
ID: 11949753
1)
try to use attachment instead of lnline... may be that is the error...

<CFHEADER name="content-disposition" value="attachment;filename=#filename#">
<CFCONTENT file="#filepath#" type="text/csv" deletefile="no" reset="yes">

2) have a look at this.... may be you can find something useful... Expert Anandkp has great explaination....
http://www.experts-exchange.com/Web/WebDevSoftware/ColdFusion/Q_20563598.html

3)
Just try to play with order...

<cfcontent type="application/vnd.ms-excel" reset="no">
<cfheader name="Content-Disposition" value="attachment;filename=export.xls">

Well this is for now... if none of this work... I think, you have bug in IE. IE 6 has bug when you write value="inline;
and IE 5.5 has bug when you write value="attachments

do not knwo what is the real reason...
Regards,
---Pinal
0
 

Author Comment

by:Shane_Capper
ID: 11949823
Thanks Pinal, I think I should be able to manage from here. You've given me a few options that I think will do the trick. You have the points.

Shane.
0
 

Author Comment

by:Shane_Capper
ID: 11949918
Ahh, I managed to get an error out of coldfusion which should point me in the right diredction.

Error: ByteArray objects cannot be converted to strings.  
0
 

Author Comment

by:Shane_Capper
ID: 11959673
For those interested, final working code below.

--------------------------------------------------
<cfsetting enableCFoutputOnly = "Yes">
<cfsilent>
<cfhttp url="http://www.webserver.com" username="myusername" password="mypassword" throwOnError="yes" port="80" method="GET" getasbinary="yes">
<cfheader name="content-disposition" value="attachment;filename=word.doc">
<cfcontent type="#cfhttp.mimetype#">
</cfsilent>
<cfscript>writeOutput(toString(cfhttp.filecontent));</cfscript>
--------------------------------------------------

Thanks Pinal! All credit to you.
0

Featured Post

Moving data to the cloud? Find out if you’re ready

Before moving to the cloud, it is important to carefully define your db needs, plan for the migration & understand prod. environment. This wp explains how to define what you need from a cloud provider, plan for the migration & what putting a cloud solution into practice entails.

Question has a verified solution.

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

One of the typical problems I have experienced is when you have to move a web server from one hosting site to another. You normally prepare all on the new host, transfer the site, change DNS and cross your fingers hoping all will be ok on new server…
Periodically we have to update or add SSL certificates for customers. Depending upon your hosting plan you may be responsible for the installation and/or key generation. In the wake of Heartbleed many sites were forced to re-key. We will concen…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …
Suggested Courses

704 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