现在的位置: 首页 > 综合 > 正文

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

2013年02月11日 ⁄ 综合 ⁄ 共 3937字 ⁄ 字号 评论关闭

如果你的站比较大,那么可能就要修改上传文件的方法,加上自动重命名和分月目录,修改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 (fredck@fckeditor.net)
 
*/

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
    }

}

抱歉!评论已关闭.