asp.net 使用ckfinder 不彈窗直接上傳圖片、檔案。
步驟一:複製QuickUploadCommandHandler.cs,比如複製出重新命名為LwjUploadCommandHandler.cs
修改類名,以及構造。
將GetJavaScriptCode修改成下面程式碼:
protected override string GetJavaScriptCode( int errorNumber, string fileName, string fileUrl )
{
System.Web.HttpRequest _Request = System.Web.HttpContext.Current.Request;
string _CKEditorName = _Request.QueryString["CKEditor"];
string _errorMsg = "";
if ( _CKEditorName == null )
{
switch ( errorNumber )
{
case Errors.None:
case Errors.UploadedFileRenamed:
case Errors.UploadedInvalidNameRenamed:
return "window.parent.OnUploadCompleted(" + errorNumber + ",'" + fileUrl.Replace( "'", "\\'" ) + "','" + fileName.Replace( "'", "\\'" ) + "') ;";
default:
return "window.parent.OnUploadCompleted(" + errorNumber + ") ;";
}
}
else
{
if ( errorNumber > 0 )
{
_errorMsg = Lang.getErrorMessage( errorNumber ).Replace( "%1", fileName );
if ( errorNumber != Errors.UploadedFileRenamed )
fileUrl = "";
}
return "window.parent.document.getElementById(\"" + _CKEditorName + "\").value='" + fileUrl.Replace("'", "\\'") + "' ;";
}
}
步驟二:將Connector.cs中的
case "QuickUpload":
commandHandler = new CommandHandlers.QuickUploadCommandHandler();
break;
下面增加
case "LwjUpload":
commandHandler = new CommandHandlers.LwjUploadCommandHandler();
break;
步驟三:
新建一個upload.aspx
內容如下:
<div>
<form dir="ltr" lang="zh-cn" encType="multipart/form-data" method="post" action="/ckfinder/core/connector/aspx/connector.aspx?command=LwjUpload&type=Files&CKEditor=<%=Request.QueryString["id"]%>&CKEditorFuncNum=0&langCode=zh-cn">
<input size="22" type="file" name="upload" data-cke-expando="266" value="" />
<input name="提交" type="submit" id="Button1" value="提交" />
</form>
</div>
然後,在要載入上傳功能的頁面,中放置iframe
如:
<iframe src="upload.aspx?id=<%=this.txt引圖.ClientID %>" frameBorder="0" style="width: 100%; height: 98%;"></iframe>
其中:
txt引圖,是一個文字框控制元件,是上傳圖片後,所得到的所上傳的檔案的返回路徑值。