upload.cfm
上传用户:li2971742
上传日期:2021-11-18
资源大小:39096k
文件大小:6k
源码类别:

OA系统

开发平台:

C#

  1. <!---
  2.  * FCKeditor - The text editor for internet
  3.  * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  4.  * 
  5.  * Licensed under the terms of the GNU Lesser General Public License:
  6.  *  http://www.opensource.org/licenses/lgpl-license.php
  7.  * 
  8.  * For further information visit:
  9.  *  http://www.fckeditor.net/
  10.  * 
  11.  * "Support Open Source software. What about a donation today?"
  12.  * 
  13.  * File Name: upload.cfm
  14.  *  This is the "File Uploader" for ColdFusion.
  15.  *  Based on connector.cfm by Mark Woods (mark@thickpaddy.com)
  16.  * 
  17.  * File Authors:
  18.  *  Wim Lemmens (didgiman@gmail.com)
  19. --->
  20. <cfinclude template="config.cfm">
  21. <cfparam name="url.type" default="File">
  22. <cffunction name="SendResults">
  23. <cfargument name="errorNumber" type="numeric" required="yes">
  24. <cfargument name="fileUrl" type="string" required="no" default="">
  25. <cfargument name="fileName" type="string" required="no" default="">
  26. <cfargument name="customMsg" type="string" required="no" default="">
  27. <cfoutput>
  28. <script type="text/javascript">
  29. window.parent.OnUploadCompleted(#errorNumber#, "#JSStringFormat(fileUrl)#", "#JSStringFormat(fileName)#", "#JSStringFormat(customMsg)#");
  30. </script>
  31. </cfoutput>
  32. <cfabort><!--- Result sent, stop processing this page --->
  33. </cffunction>
  34. <cfif NOT config.enabled>
  35. <cfset SendResults(1, '', '', 'This file uploader is disabled. Please check the "editor/filemanager/upload/cfm/config.cfm" file')>
  36. <cfelse>
  37. <cfscript>
  38. userFilesPath = config.userFilesPath;
  39. lAllowedExtensions = config.allowedExtensions[url.type];
  40. lDeniedExtensions = config.deniedExtensions[url.type];
  41. customMsg = ''; // Can be overwritten. The last value will be sent with the result
  42. // make sure the user files path is correctly formatted
  43. userFilesPath = replace(userFilesPath, "", "/", "ALL");
  44. userFilesPath = replace(userFilesPath, '//', '/', 'ALL');
  45. if ( right(userFilesPath,1) NEQ "/" ) {
  46. userFilesPath = userFilesPath & "/";
  47. }
  48. if ( left(userFilesPath,1) NEQ "/" ) {
  49. userFilesPath = "/" & userFilesPath;
  50. }
  51. if (find("/",getBaseTemplatePath())) {
  52. fs = "/";
  53. } else {
  54. fs = "";
  55. }
  56. // Get the base physical path to the web root for this application. The code to determine the path automatically assumes that
  57. // the "FCKeditor" directory in the http request path is directly off the web root for the application and that it's not a 
  58. // virtual directory or a symbolic link / junction. Use the serverPath config setting to force a physical path if necessary.
  59. if ( len(config.serverPath) ) {
  60. serverPath = config.serverPath;
  61. } else {
  62. serverPath = replaceNoCase(getBaseTemplatePath(),replace(cgi.script_name,"/",fs,"all"),"");
  63. }
  64. // map the user files path to a physical directory
  65. userFilesServerPath = serverPath & replace(userFilesPath,"/",fs,"all");
  66. </cfscript>
  67. <cfset fileName = "">
  68. <cfset fileExt = "">
  69. <cftry>
  70. <!--- we need to know the physical path to the current folder for all commands --->
  71. <cfset currentFolderPath = userFilesServerPath & url.type & fs>
  72. <!--- TODO: upload to a temp directory and move file if extension is allowed --->
  73. <!--- first upload the file with an unique filename --->
  74. <cffile action="upload"
  75. fileField="NewFile"
  76. destination="#currentFolderPath#"
  77. nameConflict="makeunique"
  78. mode="644"
  79. attributes="normal">
  80. <cfif (Len(lAllowedExtensions) AND NOT listFindNoCase(lAllowedExtensions, cffile.ServerFileExt))
  81. OR (Len(lDeniedExtensions) AND listFindNoCase(lDeniedExtensions, cffile.ServerFileExt))>
  82. <!--- Extension of the uploaded file is not allowed --->
  83. <cfset errorNumber = "202">
  84. <cffile action="delete" file="#cffile.ServerDirectory##fs##cffile.ServerFile#">
  85. <cfelse>
  86. <cfscript>
  87. errorNumber = 0;
  88. fileName = cffile.ClientFileName;
  89. fileExt = cffile.ServerFileExt;
  90. // munge filename for html download. Only a-z, 0-9, _, - and . are allowed
  91. if( reFind("[^A-Za-z0-9_-.]", fileName) ) {
  92. fileName = reReplace(fileName, "[^A-Za-z0-9-.]", "_", "ALL");
  93. fileName = reReplace(fileName, "_{2,}", "_", "ALL");
  94. fileName = reReplace(fileName, "([^_]+)_+$", "1", "ALL");
  95. fileName = reReplace(fileName, "$_([^_]+)$", "1", "ALL");
  96. }
  97. // When the original filename already exists, add numbers (0), (1), (2), ... at the end of the filename.
  98. if( compare( cffile.ServerFileName, fileName ) ) {
  99. counter = 0;
  100. tmpFileName = fileName;
  101. while( fileExists("#currentFolderPath##fileName#.#fileExt#") ) {
  102. counter = counter + 1;
  103. fileName = tmpFileName & '(#counter#)';
  104. }
  105. }
  106. </cfscript>
  107. <!--- Rename the uploaded file, if neccessary --->
  108. <cfif compare(cffile.ServerFileName,fileName)>
  109. <cfset errorNumber = "201">
  110. <cffile
  111. action="rename"
  112. source="#currentFolderPath##cffile.ServerFileName#.#cffile.ServerFileExt#"
  113. destination="#currentFolderPath##fileName#.#fileExt#"
  114. mode="644"
  115. attributes="normal">
  116. </cfif>
  117. </cfif>
  118. <cfcatch type="Any">
  119. <cfset errorNumber = "1">
  120. <cfset customMsg = "An error occured: " & cfcatch.message & " - " & cfcatch.detail>
  121. </cfcatch>
  122. </cftry>
  123. <cfif errorNumber EQ 0>
  124. <!--- file was uploaded succesfully --->
  125. <cfset SendResults(errorNumber, '#userFilesPath##url.type#/#fileName#.#fileExt#')>
  126. <cfelseif errorNumber EQ 201>
  127. <!--- file was changed (201), submit the new filename --->
  128. <cfset SendResults(errorNumber, '#userFilesPath##url.type#/#fileName#.#fileExt#', replace( fileName & "." & fileExt, "'", "'", "ALL"), customMsg)>
  129. <cfelse>
  130. <!--- An error occured(202). Submit only the error code and a message (if available). --->
  131. <cfset SendResults(errorNumber, '', '', customMsg)>
  132. </cfif>
  133. </cfif>