Ckeditör ve Ckefinder kullanirken, karsiya dosya yükleme kismindan resim yüklemesi gerçeklestirecek olursak eger Ckeditörün eski versiyonlarinda hata vermektedir. Bu sorunu çözmek için asp.net projemize projemize bir tane "Generic Handler" ekliyoruz ve "Upload" ismini veriyoruz. "Upload.ashx" dosyamizin içerigi asagidaki gibi olacak.
<%@ WebHandler Language="VB" Class="Upload" %>
Imports System
Imports System.IO
Imports System.Web
Public Class Upload : Implements IHttpHandler
Public Sub ProcessRequest(ByVal Upload As HttpContext) Implements IHttpHandler.ProcessRequest
Dim Yukle As HttpPostedFile = Upload.Request.Files("upload")
Dim CKEditorFuncNum As String = Upload.Request("CKEditorFuncNum")
'Ayni addan iki resim yüklememek için resmimizin adini degistirecegiz, * fakat ilerde aradigimizi bulabilmek adina ilk ismini tutacagiz. * Bunun için dosya adini aliyoruz
Dim DosyaAdi As String = Path.GetFileNameWithoutExtension(Yukle.FileName)
'Dosya uzantisini kontrol etmek için aliyoruz.
Dim uzanti As String = Path.GetExtension(Yukle.FileName).ToLower()
'Yeni Guid benzersiz bir isim üretiyoruz ki dosya adi verecegiz.
Dim sonresimadi As String = Guid.NewGuid().ToString()
'Dosya uzantisini kotrol ediyoruz.
If uzanti = ".jpg" Or uzanti = ".gif" Or uzanti = ".png" Or uzanti = "jpeg" Then
'Resimler klasörüne yüklüyoruz.
Yukle.SaveAs(Upload.Server.MapPath("~") + "\resimler\images\konuresimler\" + DosyaAdi + "-" + sonresimadi + uzanti)
' Resim yolunu aliyoruz.
Dim url As String = "../resimler/images/konuresimler/" + DosyaAdi + "-" + sonresimadi + uzanti
Upload.Response.Write((Convert.ToString("")
Upload.Response.End()
Else
Upload.Response.Write("Desteklenmeyen dosya tipi...")
Upload.Response.End()
End If
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
Yükleme yapilacak olan yeri resimlerle gösterecek olursak;
Asp.net Generic handler dosyamizi olusturduktan sonra ckeditör config.js dosyamiza gelip açiyoruz. Normalde buraya ckefinder dosyamizi entegre etmek için gerekli kodlari yaziyorduk. Asagidaki gibi kodlarimizi düzenliyoruz.
config.filebrowserBrowseUrl = 'ckfinder/ckfinder.html';
config.filebrowserImageBrowseUrl = 'ckfinder/ckfinder.html?Type=Images';
config.filebrowserUploadUrl = 'AppCode/Upload.ashx';
config.extraPlugins = 'youtube,syntaxhighlight';
Yukaridaki config.filebrowserUploadUrl = 'AppCode/Upload.ashx'; kodumuzda olusturmus oldugumuz ashx dosyamiz ile resim upload edilirken gerekli kodlar islenerek, resim yüklemesi basariyla gerçeklestirilmektedir. Bunu o sekilde degilde, asp.net ckeditör kullanan arkadaslar için sayfamiza eklemis oldugumuz ckeditör kontrolunun özellikleri ilede ashx dosya yolumuzu belirtebiliyoruz.
FilebrowserImageUploadUrl="AppCode/Upload.ashx özelligini kullanarak Uploand dosyamizin yolunu belirtiyoruz ve karsiya yükleme yaparken dosyamiza ulasip ordaki kodlar islenerek, resim yüklemesini basariyla gerçeklestiriyoruz. Yararli olmasi dilegiyle.