coldfusion - Issues with CFZip functionality -


i have following working half way. trying cfzip contents of downloaded excel file there 1 problem involved. code below shows there 3 tickets. 1 main ticket , 2 tickets extended answers of main ticket. attachments allowed on tickets, main ones , children's too.

when try download excel file, trying download 2 folders should inside zip file. 1 should pointing child , 1 parent. both should have respective attachments. missing big piece of code here.

here code:

<cfquery datasource="#request.dsn#" name="maintickets">     select s.ticketid,cast(s.dateraised     varchar) dateraised,s.summary,s.raisedby,s.assignedto,     st.status     ,cast(s.lastupdateddate varchar),cast(s.timespent float)      timespent,stt.tickettype,s.lastupdatedcomment     supporttickets s     inner join supportstatustype st on st.statusid = s.status     inner join supporttickettype stt on stt.tickettypeid = s.tickettype     s.ticketid in (<cfqueryparam cfsqltype="cf_sql_numeric" value="#url.ticketid#" list="yes">     ) </cfquery> <cfset filename = "detailed_ticket_summary" & dateformat(now(), 'mm_dd_yyyy') & "." & "xls"> <cfset s = spreadsheetnew("tickets summary")> <!--- add header row ---> <cfset spreadsheetaddrow(s, "ticketid,date raised,summary,raised by,assignedto,status,last updated date, time spent, ticket type, last updated comment, details")> <!--- format header ---> <cfset spreadsheetformatrow(s, #format1#, 1)> <cfset spreadsheetaddrows(s, maintickets)> <cfset spreadsheetformatcolumn(s, {textwrap=true}, 10)> <cfset spreadsheetformatcolumn(s, {textwrap=true}, 3)> <cfloop from="1" to="#maintickets.recordcount#" index="i">     <cfset k = + 1>     <cfset spreadsheetsetcellformula(s, 'hyperlink("[tickets summary]ticketid_#maintickets.ticketid#!a1","click here")',#k#,11)>     <cfset spreadsheetformatcell(s, {bold=true, color='blue', bottomborder='dotted'}, #k#, 11)> </cfloop> <cfif maintickets.recordcount>     <cfoutput query="maintickets">         <cfquery datasource="#request.dsn#" name="fetchtickets">             select s.ticketid,s.ticketnumber,cast(s.dateraised             varchar),s.summary,s.raisedby,s.assignedto,             st.status             ,cast(s.lastupdateddate varchar),s.timespent,stt.tickettype,s.lastupdatedcomment             supportticketshistory s             inner join supportstatustype st on st.statusid = s.status             inner join supporttickettype stt on stt.tickettypeid = s.tickettype             s.ticketnumber = <cfqueryparam cfsqltype="cf_sql_numeric" value="#maintickets.ticketid#">         </cfquery>          <!--- add query --->         <cfif fetchtickets.recordcount>             <cfset spreadsheetcreatesheet(s, 'ticketid_#ticketid#')>             <cfset spreadsheetsetactivesheet(s, 'ticketid_#ticketid#')>             <!--- add header row --->             <cfset spreadsheetaddrow(s, "ticketid,ticket number,date raised,summary,raised by,assignedto,status,last updated date, time spent, ticket type, last updated comment")>             <!--- format header --->             <cfset spreadsheetformatrow(s, #format1#, 1)>             <cfset spreadsheetaddrows(s, fetchtickets)>             <cfset spreadsheetformatcolumn(s, {textwrap=true}, 11)>             <cfset spreadsheetsetactivesheetnumber(s, 1)>             <cfset ielements = valuelist(maintickets.ticketid)>             <cfquery datasource="#request.dsn#" name="getattachments">                 select attach_filename,attach_filesize,attach_time,supportticketid                 support_attachments                 supportticketid = #val(fetchtickets.ticketnumber)#             </cfquery>             <cfquery datasource="#request.dsn#" name="getchkattachments">                 select support_attach_filename,support_attach_filesize,support_attach_time,                 support_supporttkthistoryid,support_supportticketid                 support_attach_history                 support_supportticketid = #val(fetchtickets.ticketnumber)#and support_supporttkthistoryid                  in (select ss.ticketid supportticketshistory ss                 ss.ticketnumber = #val(fetchtickets.ticketnumber)#)             </cfquery>             <!--- handle attachments ticket in zip format --->             <cfset currentdirectory = getdirectoryfrompath(gettemplatepath()) & getattachments.supportticketid>             <cfif !directoryexists(currentdirectory)>                 <cfdirectory action="create" directory="#currentdirectory#">             </cfif>              <cfset currentdirectory2 = getdirectoryfrompath(gettemplatepath()) & getchkattachments.support_supporttkthistoryid>             <cfif !directoryexists(currentdirectory2)>                 <cfdirectory action="create" directory="#currentdirectory2#">             </cfif>             <cfif getattachments.recordcount>                 <cfloop query="getattachments">                     <cffile action="copy"                          source="#expandpath('attachments/#getattachments.attach_filename#')#"                          destination="#currentdirectory#\">                 </cfloop>             </cfif>              <cfif getchkattachments.recordcount>                 <cfloop query="getchkattachments">                     <cffile action="copy"                          source="#expandpath('attachments/#getchkattachments.support_attach_filename#')#"                          destination="#currentdirectory2#\">                 </cfloop>             </cfif>             <!--- handle attachments ticket in zip format --->             <cfset spreadsheetwrite(s, filename, true)>             <cfset dest2 = gettempdirectory() & "/" & "tickets" & ".zip">             <cfzip action="zip" file="#dest2#">                 <cfdirectory action="list" directory="#currentdirectory#/" name="listroot">                 <cfdirectory action="list" directory="#currentdirectory2#/" name="listroot2">                 <cfset lstfiles = valuelist(listroot.name)>                 <cfset lstfiles2 = valuelist(listroot2.name)>                 <cfloop list="#lstfiles#" index="k">                     <cfzipparam source="#currentdirectory#/#k#" recurse="yes" filter="*"/>                 </cfloop>                 <cfloop list="#lstfiles2#" index="kk">                     <cfzipparam source="#currentdirectory2#/#kk#" recurse="yes" filter="*"/>                 </cfloop>             </cfzip>         </cfif>     </cfoutput> </cfif> <cfheader name="content-disposition" value="attachment;filename=#listfirst(filename,'.')#.zip"> <cfcontent file="#dest2#" type="application/zip" deletefile="true" reset="true"> 

i sorted out here way have done it.

    <cfquery datasource="#request.dsn#" name="maintickets">         select s.ticketid,cast(s.dateraised          varchar) dateraised,s.summary,s.raisedby,s.assignedto,         st.status         ,cast(s.lastupdateddate varchar),cast(s.timespent float) timespent,stt.tickettype,s.lastupdatedcomment          supporttickets s          inner join supportstatustype st on st.statusid = s.status          inner join supporttickettype stt on stt.tickettypeid = s.tickettype          s.ticketid in (<cfqueryparam cfsqltype="cf_sql_numeric" value="#url.ticketid#" list="yes">)   </cfquery>   <cfset filename = "detailed_ticket_summary" & dateformat(now(),'mm_dd_yyyy') & "." & "xls">   <cfset s = spreadsheetnew("tickets summary")>   <!--- add header row --->   <cfset spreadsheetaddrow(s, "ticketid,date raised,summary,raised by,assignedto,status,last updated date, time spent, ticket type, last updated comment, details")>   <!--- format header --->   <cfset spreadsheetformatrow(s,#format1#,1)>   <cfset spreadsheetaddrows(s, maintickets)>   <cfset spreadsheetformatcolumn(s,{textwrap=true},10)>   <cfset spreadsheetformatcolumn(s,{textwrap=true},3)>   <cfloop from="1" to="#maintickets.recordcount#" index="i">   <cfset k = i+1>   <cfset spreadsheetsetcellformula(s, 'hyperlink("[tickets summary]ticketid_#maintickets.ticketid#!a1","click here")',#k#,11)>   <cfset spreadsheetformatcell(s,{bold=true,color='blue',bottomborder='dotted'},#k#,11)>   </cfloop>   <cfif maintickets.recordcount>     <cfoutput query="maintickets">         <cfquery datasource="#request.dsn#" name="fetchtickets">             select s.ticketid,s.ticketnumber,cast(s.dateraised              varchar),s.summary,s.raisedby,s.assignedto,             st.status             ,cast(s.lastupdateddate varchar),s.timespent,stt.tickettype,s.lastupdatedcomment              supportticketshistory s              inner join supportstatustype st on st.statusid = s.status              inner join supporttickettype stt on stt.tickettypeid = s.tickettype              s.ticketnumber = <cfqueryparam cfsqltype="cf_sql_numeric" value="#maintickets.ticketid#">          </cfquery>          <!--- add query --->         <cfset temp = getdirectoryfrompath(gettemplatepath()) & 'temp'>         <cfif !directoryexists(temp)>             <cfdirectory action="create" directory="#temp#">         </cfif>         <cfif fetchtickets.recordcount>           <cfset spreadsheetcreatesheet(s , 'ticketid_#ticketid#')>           <cfset spreadsheetsetactivesheet(s , 'ticketid_#ticketid#')>           <!--- add header row --->           <cfset spreadsheetaddrow(s, "ticketid,ticket number,date raised,summary,raised by,assignedto,status,last updated date, time spent, ticket type, last updated comment")>           <!--- format header --->           <cfset spreadsheetformatrow(s,#format1#,1)>           <cfset spreadsheetaddrows(s , fetchtickets)>           <cfset spreadsheetformatcolumn(s,{textwrap=true},11)>           <cfset spreadsheetsetactivesheetnumber(s, 1)>           <cfset ielements = valuelist(maintickets.ticketid)>           <cfquery datasource="#request.dsn#" name="getattachments">             select attach_filename,attach_filesize,attach_time,supportticketid             support_attachments              supportticketid = #val(fetchtickets.ticketnumber)#           </cfquery>           <cfquery datasource="#request.dsn#" name="getchkattachments">             select support_attach_filename,support_attach_filesize,support_attach_time,             support_supporttkthistoryid,support_supportticketid             support_attach_history              support_supportticketid = #val(fetchtickets.ticketnumber)#              , support_supporttkthistoryid in (select ss.ticketid supportticketshistory ss             ss.ticketnumber = #val(fetchtickets.ticketnumber)#)           </cfquery>           <cfif getattachments.recordcount>             <!--- handle attachments ticket in zip format --->             <cfset currentdirectory = "mainticketid_" & "number_" & getattachments.supportticketid & "_attachments">             <cfdump var="#temp#\#currentdirectory#">             <cfif !directoryexists("#temp#\#currentdirectory#")>                 <cfdirectory action="create" directory="#temp#\#currentdirectory#">             </cfif>             <cfdump var="#currentdirectory#">                 <cfif getattachments.recordcount>                  <cfloop query="getattachments">                        <cffile action="copy" source="#expandpath('attachments/#getattachments.attach_filename#')#"                    destination="#temp#\#currentdirectory#\">                 </cfloop>                  </cfif>           </cfif>         <cfif getchkattachments.recordcount>             <cfset currentdirectory2 = "mainticket_" & getchkattachments.support_supportticketid & "_updated_child_" & getchkattachments.support_supporttkthistoryid & "_attachments">             <cfif !directoryexists("#temp#\#currentdirectory2#")>               <cfdirectory action="create" directory="#temp#\#currentdirectory2#">             </cfif>                 <cfif getchkattachments.recordcount>                     <cfloop query="getchkattachments">                        <cffile action="copy" source="#expandpath('attachments/#getchkattachments.support_attach_filename#')#"                      destination="#temp#\#currentdirectory2#\">                 </cfloop>                 </cfif>         </cfif>         <!--- handle attachments ticket in zip format --->         <cfset spreadsheetwrite(s, filename, true)>           <cfset dest2 = gettempdirectory() & "/" & "tickets" & ".zip">           <cfzip action="zip" file="#dest2#" overwrite="true">              <cfzipparam source="#temp#"/>              <cfzipparam source="#filename#"/>           </cfzip>         </cfif>         </cfoutput>       </cfif>     <cfdirectory action="delete" directory="#temp#" recurse="yes">   <cfheader name="content-disposition" value="attachment;filename=#listfirst(filename,'.')#.zip">   <cfcontent file="#dest2#" type="application/zip" deletefile="true" reset="true"> 

this can instead how nest cfzip functionality


Comments

Popular posts from this blog

php - mySql Join with 4 tables -

css - Text drops down with smaller window -

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -