cf_commands.cfm
上传用户:ah_jiwei
上传日期:2022-07-24
资源大小:54044k
文件大小:8k
源码类别:

数据库编程

开发平台:

Visual C++

  1. <cfsetting enablecfoutputonly="Yes">
  2. <!---
  3.  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  4.  * Copyright (C) 2003-2007 Frederico Caldeira Knabben
  5.  *
  6.  * == BEGIN LICENSE ==
  7.  *
  8.  * Licensed under the terms of any of the following licenses at your
  9.  * choice:
  10.  *
  11.  *  - GNU General Public License Version 2 or later (the "GPL")
  12.  *    http://www.gnu.org/licenses/gpl.html
  13.  *
  14.  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  15.  *    http://www.gnu.org/licenses/lgpl.html
  16.  *
  17.  *  - Mozilla Public License Version 1.1 or later (the "MPL")
  18.  *    http://www.mozilla.org/MPL/MPL-1.1.html
  19.  *
  20.  * == END LICENSE ==
  21.  *
  22.  * This file include the functions that handle the Command requests
  23.  * in the ColdFusion Connector (MX 6.0 and above).
  24. --->
  25. <cffunction name="FileUpload" returntype="void" output="true">
  26. <cfargument name="resourceType" type="string" required="yes" default="">
  27. <cfargument name="currentFolder" type="string" required="yes" default="">
  28. <cfargument name="sCommand" type="string" required="yes" default="">
  29. <cfset var sFileName = "">
  30. <cfset var sFilePart = "">
  31. <cfset var sFileExt = "">
  32. <cfset var sFileUrl = "">
  33. <cfset var sTempFilePath = "">
  34. <cfset var errorNumber = 0>
  35. <cfset var customMsg = 0>
  36. <cfset var counter = 0>
  37. <cfset var destination = "">
  38.     <cftry>
  39.         <cffile action="UPLOAD" filefield="NewFile" destination="#GetTempDirectory()#" nameconflict="makeunique" mode="0755" />
  40. <cfset sTempFilePath = CFFILE.ServerDirectory & REQUEST.fs & CFFILE.ServerFile>
  41. <!--- Map the virtual path to the local server path. --->
  42. <cfset sServerDir = ServerMapFolder( ARGUMENTS.resourceType, ARGUMENTS.currentFolder, ARGUMENTS.sCommand) >
  43. <!--- Get the uploaded file name. --->
  44. <cfset sFileName = SanitizeFileName( CFFILE.ClientFile ) >
  45. <cfset sOriginalFileName = sFileName >
  46. <cfif isDefined( "REQUEST.Config.SecureImageUploads" ) and REQUEST.Config.SecureImageUploads>
  47. <cfif not IsImageValid( sTempFilePath, CFFILE.ClientFileExt )>
  48. <cftry>
  49. <cffile action="delete" file="#sTempFilePath#">
  50. <cfcatch type="any">
  51. </cfcatch>
  52. </cftry>
  53. <cfthrow errorcode="202" type="fckeditor">
  54. </cfif>
  55. </cfif>
  56. <cfif isDefined( "REQUEST.Config.HtmlExtensions" ) and not listFindNoCase( REQUEST.Config.HtmlExtensions, CFFILE.ClientFileExt )>
  57. <cfif DetectHtml( sTempFilePath )>
  58. <cftry>
  59. <cffile action="delete" file="#sTempFilePath#">
  60. <cfcatch type="any">
  61. </cfcatch>
  62. </cftry>
  63. <cfthrow errorcode="202" type="fckeditor">
  64. </cfif>
  65. </cfif>
  66. <cfif not IsAllowedExt( CFFILE.ClientFileExt, ARGUMENTS.resourceType )>
  67. <cftry>
  68. <cffile action="delete" file="#sTempFilePath#">
  69. <cfcatch type="any">
  70. </cfcatch>
  71. </cftry>
  72. <cfthrow errorcode="202" type="fckeditor">
  73. </cfif>
  74. <!--- When the original filename already exists, add numbers (0), (1), (2), ... at the end of the filename. --->
  75. <cfscript>
  76. sFileExt = GetExtension( sFileName ) ;
  77. sFilePart = RemoveExtension( sFileName );
  78. while( fileExists( sServerDir & sFileName ) )
  79. {
  80. counter = counter + 1;
  81. sFileName = sFilePart & '(#counter#).' & CFFILE.ClientFileExt;
  82. errorNumber = 201;
  83. }
  84. </cfscript>
  85.   <cfset destination = sServerDir & sFileName>
  86. <!---
  87. <cfdump var="#sTempFilePath#">
  88. <cfoutput ><br /></cfoutput>
  89. <cfdump var="#destination#">
  90. <cfabort>
  91.  --->
  92. <cflock name="#destination#" timeout="30" type="Exclusive">
  93. <cftry>
  94. <cffile action="move" source="#sTempFilePath#" destination="#destination#" mode="755">
  95. <!--- omit CF 6.1 error during moving uploaded file, just copy that file instead of moving --->
  96. <cfcatch type="any">
  97. <cffile action="copy" source="#sTempFilePath#" destination="#destination#" mode="755">
  98. </cfcatch>
  99. </cftry>
  100. </cflock>
  101. <cfset sFileUrl = CombinePaths( GetResourceTypePath( ARGUMENTS.resourceType, sCommand ) , ARGUMENTS.currentFolder ) >
  102. <cfset sFileUrl = CombinePaths( sFileUrl , sFileName ) >
  103. <cfcatch type="fckeditor">
  104. <cfset errorNumber = CFCATCH.ErrorCode>
  105. </cfcatch>
  106. <cfcatch type="any">
  107. <cfset errorNumber = "1">
  108. <cfset customMsg = CFCATCH.Message >
  109. </cfcatch>
  110.     </cftry>
  111. <cfset SendUploadResults( errorNumber, sFileUrl, sFileName, customMsg ) >
  112. </cffunction>
  113. <cffunction name="GetFolders" returntype="void" output="true">
  114. <cfargument name="resourceType" type="String" required="true">
  115. <cfargument name="currentFolder" type="String" required="true">
  116. <cfset var i = 1>
  117. <cfset var folders = "">
  118. <!--- Map the virtual path to the local server path --->
  119. <cfset var sServerDir = ServerMapFolder( ARGUMENTS.resourceType, ARGUMENTS.currentFolder, "GetFolders" ) >
  120. <!--- Sort directories first, name ascending --->
  121. <cfdirectory action="list" directory="#sServerDir#" name="qDir" sort="type,name">
  122. <cfscript>
  123. while( i lte qDir.recordCount )
  124. {
  125. if( compareNoCase( qDir.type[i], "FILE" ) and not listFind( ".,..", qDir.name[i] ) )
  126. {
  127. folders = folders & '<Folder name="#HTMLEditFormat( qDir.name[i] )#" />' ;
  128. }
  129. i = i + 1;
  130. }
  131. </cfscript>
  132. <cfoutput><Folders>#folders#</Folders></cfoutput>
  133. </cffunction>
  134. <cffunction name="GetFoldersAndfiles" returntype="void" output="true">
  135. <cfargument name="resourceType" type="String" required="true">
  136. <cfargument name="currentFolder" type="String" required="true">
  137. <cfset var i = 1>
  138. <cfset var folders = "">
  139. <cfset var files = "">
  140. <!--- Map the virtual path to the local server path --->
  141. <cfset var sServerDir = ServerMapFolder( ARGUMENTS.resourceType, ARGUMENTS.currentFolder, "GetFolders" ) >
  142. <!--- Sort directories first, name ascending --->
  143. <cfdirectory action="list" directory="#sServerDir#" name="qDir" sort="type,name">
  144. <cfscript>
  145. while( i lte qDir.recordCount )
  146. {
  147. if( not compareNoCase( qDir.type[i], "DIR" ) and not listFind( ".,..", qDir.name[i] ) )
  148. {
  149. folders = folders & '<Folder name="#HTMLEditFormat(qDir.name[i])#" />' ;
  150. }
  151. else if( not compareNoCase( qDir.type[i], "FILE" ) )
  152. {
  153. fileSizeKB = round(qDir.size[i] / 1024) ;
  154. files = files & '<File name="#HTMLEditFormat(qDir.name[i])#" size="#IIf( fileSizeKB GT 0, DE( fileSizeKB ), 1)#" />' ;
  155. }
  156. i = i + 1 ;
  157. }
  158. </cfscript>
  159. <cfoutput><Folders>#folders#</Folders></cfoutput>
  160. <cfoutput><Files>#files#</Files></cfoutput>
  161. </cffunction>
  162. <cffunction name="CreateFolder" returntype="void" output="true">
  163. <cfargument name="resourceType" required="true" type="string">
  164. <cfargument name="currentFolder" required="true" type="string">
  165. <cfset var sNewFolderName = url.newFolderName >
  166. <cfset var sServerDir = "" >
  167. <cfset var errorNumber = 0>
  168. <cfset var sErrorMsg = "">
  169. <cfset var currentFolderPath = ServerMapFolder( ARGUMENTS.resourceType, ARGUMENTS.currentFolder, 'CreateFolder' )>
  170. <cfparam name="url.newFolderName" default="">
  171. <cfscript>
  172. sNewFolderName = SanitizeFolderName( sNewFolderName ) ;
  173. </cfscript>
  174. <cfif not len( sNewFolderName ) or len( sNewFolderName ) gt 255>
  175. <cfset errorNumber = 102>
  176. <cfelseif directoryExists( currentFolderPath & sNewFolderName )>
  177. <cfset errorNumber = 101>
  178. <cfelseif find( "..", sNewFolderName )>
  179. <cfset errorNumber = 103>
  180. <cfelse>
  181. <cfset errorNumber = 0>
  182. <!--- Map the virtual path to the local server path of the current folder. --->
  183. <cfset sServerDir = currentFolderPath & sNewFolderName >
  184. <cftry>
  185. <cfdirectory action="create" directory="#currentFolderPath##sNewFolderName#" mode="755">
  186. <cfcatch type="any">
  187. <!---
  188. un-resolvable error numbers in ColdFusion:
  189. * 102 : Invalid folder name.
  190. * 103 : You have no permissions to create the folder.
  191. --->
  192. <cfset errorNumber = 110>
  193. </cfcatch>
  194. </cftry>
  195. </cfif>
  196. <cfoutput><Error number="#errorNumber#" originalDescription="#HTMLEditFormat(sErrorMsg)#" /></cfoutput>
  197. </cffunction>