Search code examples
xmlcoldfusionftpcoldfusion-8

How to upload an xml string to ftp?


I am using ColdFusion 8, Windows 7 o/s and a MySql database. I am creating an xml file by fetching a record from my database. I then want to upload it into my FTP location. My code to create xml is below. How do I upload this xml via FTP?

<cfquery name="getData" datasource="datasourcename" dbtype="ODBC" username="myusername" password="mypassword">
    Select * from orders where orderid in (100,102,104)
</cfquery>

<cfset csvstr = createObject("java","java.lang.StringBuffer")>
<cfoutput query="getData">
    <cfset csvstr.append("?xml version=""1.0""?>") >
    <cfset csvstr.append("EDIData xmlns:eci=""http://www.abcdefg.com/CustomerReport"" ") >
    <cfset csvstr.append("       xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" ") >
    <cfset csvstr.append("       xsi:noNamespaceSchemaLocation=""CustomerReport.xsd"">") >
    <cfset csvstr.append("  MarketerDunsNumber>"& #MarketerDunsNumber# &"/MarketerDunsNumber>") >
    <cfset csvstr.append("  UtilityDunsNumber>"& #UtilityDunsNumber# &"/UtilityDunsNumber>") >
    <cfset csvstr.append("  Record RecordType="""& #RecordType# &""">") >
    <cfset csvstr.append("    NameCode>"& #NameCode# &"/NameCode>") >
    <cfset csvstr.append("    ContactName>"& #ContactName# &"/ContactName>") >
    <cfset csvstr.append("  /Record>") >
    <cfset csvstr.append("/EDIData>") >
    <cfset csvstr.append(Chr(13) & Chr(10)) >
    <cfset sFileName="CTData_"& #MarketerDunsNumber# &"_"& #UtilityDunsNumber# &".xml">
</cfoutput>

Solution

  • <cfoutput   query=  "getData">
    
        <cfsavecontent  variable=   "sXMLContent">
        <EDIData    xmlns:eci="http://www.abcdefg.com/CustomerReport"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xsi:noNamespaceSchemaLocation="CustomerReport.xsd">
            <MarketerDunsNumber>#MarketerDuinsNumber#</MarketerDunsNumber>
            <UtilityDunsNumber>#UtilityDunsNumber#</UtilityDunsNumber>
            <Record RecordType="#RecordType#">
                <NameCode>#NameCode#</NameCode>
                <ContactName>#ContactName#</ContactName>
            </Record>
        </EDIData>
    
        </cfsavecontent>
    
        <cfset  sTemporaryFileName= "xmlToFTP.xml" />
        <cfset  sRemoteFileName=    "xmlToFTP.xml" />
    
        <cffile action=     "write"
                file=       "#getTempDirectory()#/#sTemporaryFileName#"
                content=    "#toString( XMLParse( sXMLContent ) )#" />
        <cftry>
            <cfftp  action=     "putFile"
                    server=     "some.ftp.server.com"
                    user=       "user"
                    password=   "password"
                    localFile=  "#getTempDirectory()#/#sTemporaryFileName#"
                    remoteFile= "#sRemoteFileName#" />
    
            <cfcatch>
                <!---   TODO: Do something with your error here.    --->
    
            </cfcatch>
        </cftry>
    
    </cfoutput>
    

    Something a bit like this. It should be enough to get you started.