eWebEditor、WebHtmlEidtor 等许多在线编辑器默认都有一个功能,可以实时把图片上传到服务器并插入到编辑器里面,而在 Freetextbox 默认的“插入图片”只能让你插入一个图片网址,如果你需要实时上传图片和对图片进行设置的话,就要打开强大的 InsertImageFromGallery 功能。虽然网上能搜到不少的相关文章,但基本上都是没用的,估计可能是版本不同的原因,我下载的版本是3.1.6。
首先把下载好的 FTBv3-1-6.zip 解压。然后对应 asp.net 的版本 FreeTextBox.dll 添加到 Visual Studio 的工具栏里面,如 asp.net 版本是2.0,则在 Visual Studio 2005 里右击“添加选项卡”添加名为“FreeTextBox”的项,右击项在弹出菜单中点击“选择项”,在“.Net Framwork组件”中选“浏览”把 Framework-2.0 里面的 FreeTextBox.dll 添加进去。完成了这一步之后,就可以在任何网站或者Web Project使用FreeTextBox了,只要简单地把工具栏上面的FreeTextBox拖到页面上即可,VS会帮你Copy所需的DLL文件和生 成相应的licenses.licx(这个会在你的应用程序根目录,是FreeTextBox的授权文件)。
为了打开 InsertFromGallery ,必须先从 FTB 的解压目录把 ftb.imagegallery.aspx 拷贝到网站/Web Project目录下,然后,先把 ftb.imagegallery.aspx 的只读属性去掉,因为需要对它进行一些必要的更改,在源代码视图中,把JavaScriptLocation、 UtilityImagesLocation这两项设为InternalResource让它引用DLL的内嵌资源文件。再把 AllowImageDelete、AllowImageUpload、AllowDirectoryCreate、 AllowDirectoryDelete等都设为true。
现在,对页面上的 FreeTextBox 控件进行设置,ImageGalleryPath 指定图片存放的位置(注意要按照此路径建立相应的文件夹),ImageGalleryUrl 指定 ftb.imagegallery.aspx 所在的URL,如果FreeTextBox所在的页与ftb.imagegallery.aspx在同一目录下,则无需设置此项,最后要设置 ToolbarLayout 属性,在 InsertImage 之后加入 InsertImageFromGallery 。
这时用浏览器预览之后会在原来的Insert Image按钮右边多出一个按钮来,通过这个就可以实现上传图片文件并对图片进行适当地设置再插入到编辑器中。
(来源:http://www.cnblogs.com/yssoft/archive/2009/04/29/1446102.html)经过测试,完全正确。
第二部分:建立动态的图片存储地址(按照日期分文件夹存储)
第一步:在使用freetextbox的页面后台代码中添加形成文件夹地址的函数:
public string GetPath()
{
string path = "upload/"; //事先创建的虚拟目录
DateTime now = DateTime.Now; // 定义时间变量并赋值为当前时间
string year = now.Year.ToString().Trim();// 获取当前时间的年份,下同
string month = now.Month.ToString().Trim();
string day = now.Day.ToString().Trim();
string hour = now.Hour.ToString().Trim();
string filepath = path + year + "_" + month + "/" + day;// 获取括号内的虚拟路径对应的物理路径
if (!System.IO.Directory.Exists(Server.MapPath(filepath)))
System.IO.Directory.CreateDirectory(Server.MapPath(filepath));
return filepath;
}
第二步:在页面中添加
protected void Page_Load(object sender, EventArgs e)
{
this.FreeTextBox1.ImageGalleryPath = GetPath();
}
第三步 : 删除 FreeTextBox 中ImageGalleryPath 。
最终创建的文件夹目录格式为:upload 文件夹下,按照年月建立文件夹,然后在子目录下按照日期建立文件夹,图片存储在子文件夹中。(upload/2009_12/15/123.gif)
<form id="Form1" runat="server" enctype="multipart/form-data">
<FTB:ImageGallery id="ImageGallery1"
JavaScriptLocation="InternalResource"
UtilityImagesLocation="InternalResource"
SupportFolder="~/aspnet_client/FreeTextBox/"
AllowImageDelete=true AllowImageUpload=true AllowDirectoryCreate=true AllowDirectoryDelete=false runat="Server" />
</form>