FCKeditor实现上传分月目录和文件重命名(C#)

如果你的站比较大,那么可能就要修改上传文件的方法,加上自动重命名和分月目录,修改Uploader.cs:

/*
 * FCKeditor - The text editor for internet
 * Copyright (C) 2003-2005 Frederico Caldeira Knabben
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 *         
http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit:
 *         
http://www.fckeditor.net/
 * 
 * "Support Open Source software. What about a donation today?"
 * 
 * File Name: Uploader.cs
 *     This is the code behind of the uploader.aspx page used for Quick Uploads.
 * 
 * File Authors:
 *         Frederico Caldeira Knabben ([email protected])
 
*/


using  System ;
using  System.Globalization ;
using  System.Xml ;
using  System.Web ;

namespace  FredCK.FCKeditorV2
{
    
public class Uploader : FileWorkerBase
    
{
        
protected override void OnLoad(EventArgs e)
        
{
            
// Get the posted file.
            HttpPostedFile oFile = Request.Files["NewFile"];

            
// Check if the file has been correctly uploaded
            if (oFile == null || oFile.ContentLength == 0)
            
{
                SendResults(
202);
                
return;
            }


            
int iErrorNumber = 0;
            
string sFileUrl = "";

            
// Get the uploaded file name.
            
//string sFileName = System.IO.Path.GetFileName( oFile.FileName ) ;

            
//检查建立分月目录
            string sFolder = DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString();

            System.IO.DirectoryInfo dir 
= new System.IO.DirectoryInfo(System.IO.Path.Combine(this.UserFilesDirectory, sFolder));

            
if (!dir.Exists)
            
{
                dir.Create();
            }


            
//根据日期和随机数设置自动重命名文件
            Random rd = new Random();
            
string sFileName = sFolder + "/" + DateTime.Now.ToString("yyyyMMddHHmmss"+ rd.Next(10).ToString();

            
int iCounter = 0;

            
while (true)
            
{
                
//防止没有扩展名的处理,弃用内置方法
                string sFileExtension = string.Empty;
                
try
                
{
                    sFileExtension 
= oFile.FileName.Substring(oFile.FileName.LastIndexOf('.'), oFile.FileName.Length - oFile.FileName.LastIndexOf('.'));

                }

                
catch
                
{
                    
//Exception ex = new Exception(oFile.FileName);
                    
//throw ex;
                    sFileExtension = ".jpg";
                }

                
string sFilePath = System.IO.Path.Combine(this.UserFilesDirectory, sFileName) + sFileExtension;


                
if (System.IO.File.Exists(sFilePath))
                
{
                    iCounter
++;
                    sFileName 
=
                        sFileName 
+
                        
"(" + iCounter + ")" +
                        sFileExtension;

                    iErrorNumber 
= 201;
                }

                
else
                
{
                    oFile.SaveAs(sFilePath);

                    sFileUrl 
= System.IO.Path.Combine(this.UserFilesPath, sFileName + sFileExtension);
                    
break;
                }

            }


            SendResults(iErrorNumber, sFileUrl, sFileName);
        }


        
#region SendResults Method

        
private void SendResults( int errorNumber )
        
{
            SendResults( errorNumber, 
"""""" ) ;
        }


        
private void SendResults( int errorNumber, string fileUrl, string fileName )
        
{
            SendResults( errorNumber, fileUrl, fileName, 
"" ) ;
        }


        
private void SendResults( int errorNumber, string fileUrl, string fileName, string customMsg )
        
{
            Response.Clear() ;

            Response.Write( 
"<script type="text/javascript">" ) ;
            Response.Write( 
"window.parent.OnUploadCompleted(" + errorNumber + ",'" + fileUrl.Replace( "'""\'" ) + "','" + fileName.Replace( "'""\'" ) + "','" + customMsg.Replace( "'""\'" ) + "') ;" ) ;
            Response.Write( 
"</script>" ) ;

            Response.End() ;
        }


        
#endregion

    }

}


你可能感兴趣的:(fckeditor)