当前位置: 代码迷 >> ASP.NET >> fckeditor 图片上传-生成文件夹【.net 2.0环境】解决方法
  详细解决方案

fckeditor 图片上传-生成文件夹【.net 2.0环境】解决方法

热度:9123   发布时间:2013-02-25 00:00:00.0
fckeditor 图片上传-生成文件夹【.net 2.0环境】
fckeditor 编辑器在配置图片上传路径后,添加的图片都会在这个文件下,
如果如果很多,都堆积在一起会导致打开网站时很卡,
请问下有什么办法,可以上传图片的时候,按时间生成文件夹。

忘知道者帮忙。谢谢

------解决方案--------------------------------------------------------
打开网站是很卡和文件夹多少有关系?
受教了,等高人,
------解决方案--------------------------------------------------------
有关系的吗,你在某个页面是要先加载全部图片的吗?
------解决方案--------------------------------------------------------
文件夹里应该有个ASPX文件可以修改图片传具体忘了,自己找找!
------解决方案--------------------------------------------------------
不太清楚,里面应该可以修改原代码,以前看过一下.那时他的做法不是按日期去新建文件夹,而是根据不是人上传在不同的文件件里。不过我想做法应该差不多的,上网找找
------解决方案--------------------------------------------------------
//要判断服务器端文件或者目录的存在性,需要添加命名空间System.IO:
//ASP.NET
using System.IO;
if(Directory.Exists(Server.MapPath("~/Back")))
{
//存在目录
}
else
{
//不存在目录
Directory.CreateDirectory(Server.MapPath("~/Back")); //创建该目录
}
if(File.Exists(Server.MapPath("~/Back/Data.xml")))
{
//存在文件
}
else
{
//不存在文件
Directory.Create(Server.MapPath("~/Back/Data.xml"));//创建该文件
}

//Server.MapPath("~/Back")用于得到该虚拟目录或虚拟文件的绝对路径

------解决方案--------------------------------------------------------
好像没影响吧,我也用的这个编辑器,怎么没你说的卡?
------解决方案--------------------------------------------------------
所有图片放一个文件夹不好管理是真的。对于会卡这一点。没感觉到。好像跟卡没关系的吧
------解决方案--------------------------------------------------------
fckeditor在上传图片时,默认是使用自带的上传程序。你可以使用自己的上传程序替代默认的上传程序,实现任何你自己想做的功能。

在fckconfig.js中,找到如下代码
FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser?Type=Image&Connector=../../connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;

修改为自己的处理程序即可,比如
FCKConfig.ImageBrowserURL = /Common/FileManager.aspx';

------解决方案--------------------------------------------------------
探讨
打开网站是很卡和文件夹多少有关系?
受教了,等高人,

------解决方案--------------------------------------------------------
探讨
引用:
打开网站是很卡和文件夹多少有关系?
受教了,等高人,


可以肯定的告诉你
没有关系的
不要自己想当然。

------解决方案--------------------------------------------------------
可以的 我现在就是这样弄 等我找找

文件太多的话是在服务器上浏览不方便,打开文件夹的时候特别慢,网页倒没感觉什么
------解决方案--------------------------------------------------------
我现在机器上没有源代码了,你告诉我个邮箱,我给你发个修改的dll
是自动按月份命名的
------解决方案--------------------------------------------------------
更改 FileWorkerBase.CS 的源码, 自己看就能看明白的 然后重新编译组件
------解决方案--------------------------------------------------------
探讨
引用:
引用:
打开网站是很卡和文件夹多少有关系?
受教了,等高人,


可以肯定的告诉你
没有关系的
不要自己想当然。


呵呵,你也不要想当然,当一个目录下的文件或者文件夹到了一定的数量(1万左右)就能感觉出来,windows系统要把这个目录下的文件夹和文件列出来会花一点时间的,再加上网络的延迟,就会很明显.

另外,FckEditor 不是可以自己手动创建文件夹吗?

------解决方案--------------------------------------------------------
尤其是文件名称是纯数字的时候
与文件夹的文件数量的关系更小
这是我试验的结果。

当然有谁参与过WINDOWS设计或者研究很深的我愿意倾听
------解决方案--------------------------------------------------------
C# code
/* * 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.                ///2007.8.9修改            ///fckeditor的文件上传默认是不改名的,同时还不支持中文文件名,            ///这样一来是上传的文件会变成“.jpg”这样的无法读的文件,            ///再就是会有重名文件,当然重名这点倒没什么,因为fckeditor会自动改名,            ///会在文件名后加(1)这样来进行标识。            ///但是,我们通常的习惯是让程序自动生成不重复的文件名            ///由年月日时分秒以及三位随机数组成文件名            ///                        //定义一个随机数            Random objRandom;            objRandom = new Random();            int m;            //生成一个小于1000的随机数            m = objRandom.Next(1000);            //定义一个日期变量            DateTime now = DateTime.Now;            //把文件名设置为日期的年月日和时间加上随机数再防止重名  GetExtension是取得文件名的扩展名            string sFileName = now.ToString("yyyyMMddHHmmss")+m.ToString()+System.IO.Path.GetExtension(oFile.FileName);            string sFilePath = System.IO.Path.Combine(this.UserFilesDirectory,sFileName);            oFile.SaveAs(sFilePath);            sFileUrl = this.UserFilesPath + sFileName;            /*string sFileName = System.IO.Path.GetFileName( oFile.FileName ) ;            int iCounter = 0 ;            while ( true )            {                string sFilePath = System.IO.Path.Combine( this.UserFilesDirectory, sFileName ) ;                if ( System.IO.File.Exists( sFilePath ) )                {                    iCounter++ ;                    sFileName =                         System.IO.Path.GetFileNameWithoutExtension( oFile.FileName ) +                        "(" + iCounter + ")" +                        System.IO.Path.GetExtension( oFile.FileName ) ;                    iErrorNumber = 201 ;                }                else                {                    oFile.SaveAs( sFilePath ) ;                    sFileUrl = this.UserFilesPath + sFileName ;                    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    }}
  相关解决方案