/** * We must extract the physical server directory for the webroot of this project to append the base url path * e.g. * PATH=c:\inetpub\wwwroot\project1\fckeditor\editor\filemanager\browser\default\connectors\cfm\connector.cfm * URL =/fckeditor/editor/filemanager/browser/default/connectors/cfm/connector.cfm * ROOT=c:\inetpub\wwwroot\project1\ * * This may fail if you use an symbolic link inside your webroot */ sRootDir = replace( getBaseTemplatePath(), "\", "/", "ALL"); iLen = listLen( cgi.script_name, '/' ); for( i=iLen; i GTE 1; i=i-1 ) { iPos = listFindNoCase( sRootDir, listGetAt( cgi.script_name, i, '/' ), '/' ); if( iPos GT 0 ) sRootDir = listDeleteAt( sRootDir, iPos, '/' ); } // replace backslashes in URL with normal slashes sUserFilesURL = replace( sUserFilesURL, "\", "/", "ALL"); // Check the base folder syntax (must end with a slash). if( compare( right( sUserFilesURL, 1), "/" ) ) sUserFilesURL = sUserFilesURL & "/"; // Create the physical path to the media root directory sUserFilesPath = sRootDir & sUserFilesURL; sUserFilesPath = replace( sUserFilesPath, '//', '/', 'ALL' ); // Check the current folder syntax (must begin and start with a slash). if( compare( left( URL.CurrentFolder, 1), "/" ) ) URL.CurrentFolder = "/" & URL.CurrentFolder; if( compare( right( URL.CurrentFolder, 1), "/" ) ) URL.CurrentFolder = URL.CurrentFolder & "/"; /** * Prepare the XML Header and Footer */ sXMLHeader = ''; sXMLHeader = sXMLHeader & ''; sXMLFooter = ''; sXMLContent = ''; sErrorNumber = 0; sFileName = CFFILE.ClientFileName; sFileExt = CFFILE.ServerFileExt; /** * Validate filename for html download. Only a-z, 0-9, _, - and . are allowed. */ if( reFind("[^A-Za-z0-9_\-\.]", sFileName) ) { sFilename = reReplace(sFilename, "[^A-Za-z0-9\-\.]", "_", "ALL"); sFilename = reReplace(sFilename, "_{2,}", "_", "ALL"); sFilename = reReplace(sFilename, "([^_]+)_+$", "\1", "ALL"); sFilename = reReplace(sFilename, "$_([^_]+)$", "\1", "ALL"); } // When the original filename already exists, add numbers (0), (1), (2), ... at the end of the filename. if( compare( CFFILE.ServerFileName, sFileName ) ) { iCounter = 0; sTmpFileName = sFileName; while( fileExists('#sUserFilesPath##URL.Type##URL.CurrentFolder##sFilename#.#sFileExt#') ) { iCounter=iCounter+1; sFileName = sTmpFileName & '(#iCounter#)'; } } iLen = qDir.recordCount; i=1; sFolders = ''; while( i LTE iLen ) { if( not compareNoCase( qDir.type[i], "FILE" )) break; if( not listFind(".,..", qDir.name[i]) ) sFolders = sFolders & ''; i=i+1; } sXMLContent = sXMLContent & '' & sFolders & ''; iLen = qDir.recordCount; i=1; sFolders = ''; sFiles = ''; while( i LTE iLen ) { if( not compareNoCase( qDir.type[i], "DIR" ) and not listFind(".,..", qDir.name[i]) ) { sFolders = sFolders & ''; } else if( not compareNoCase( qDir.type[i], "FILE" ) ) { iFileSize = int( qDir.size[i] / 1024 ); sFiles = sFiles & ''; } i=i+1; } sXMLContent = sXMLContent & '' & sFolders & ''; sXMLContent = sXMLContent & '' & sFiles & ''; '> #sXMLHeader##sXMLContent##sXMLFooter#