Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 15904|Yanıt: 0

[ASP.NET] asp.net resim yükleme fonksiyonunu kurmak için ckeditor_3.6.2+ckfinderckfinder_aspnet_2.1.1 kullanır

[Bağlantıyı kopyala]
Yayınlandı 18.04.2015 19:11:55 | | |

CKEditor ve CKFinder'ın en son sürümleri resmi web sitesinden (http://cksource.com) indirilebilir.

Yukarıdaki iki kaynağı web sitesinin kök dizinine koyun: /CKEditor (burada 3.6.2 sürümünde _Samples\ckeditor klasörünü sıkıştırılmış klasöre koymanız gerekiyor) ve /CKFinder (küçük harf duyarsız, klasörü doğrudan buraya koyabilirsiniz). )

Burada bazen üretimde bir hata olur. Örneğin, sitenin indirilen dosyayı silmek için birden fazla AssemblyInfo.cs olması nedeniyle, tekrarlanan AssemblyTitle tür etiketler vardır. Ya da klasörü _source sil. Burada herhangi bir sorunuz varsa, benimle iletişime geçebilirsiniz: QQ: 515072775

Bir sayfada CKEditor'u kullanmak:

<textarea cols="80" id="prcontent" name="content" rows="50"> Merhaba, kullanımınız başarılıydı! </textarea>

<scrip remove ttype="text/javascrip remove t" >

CKEDITOR.replace('content', { height:200, width: 520 });

. .</scrip去掉t>

CKEditor'da upload fonksiyonu yok, bu yüzden CKFinder ile yüklenmesi gerekiyor

Adım 1: Web sitesinin CKFinder'ın dll'sine (dizin: /CKFinder/bin/Release/CKFinder.dll) referans vermesi gerekir

Adım 2: CKEditor'un config.js'sini (dizin: /CKEditor/config.js) CKEDITOR.editorConfig fonksiyonunda yapılandırın, gereksiz fonksiyonlar kaldırılabilir


CKEDITOR.editorConfig = function(config) {
config.filebrowserBrowseUrl = 'ckfinder/ckfinder.html'; "~/ckfinder/..." veya "/ckfinder/..." yazmayın.
config.filebrowserImageBrowseUrl = 'ckfinder/ckfinder.html? Type=Images';
config.filebrowserFlashBrowseUrl = 'ckfinder/ckfinder.html? Type=Flash';
config.filebrowserUploadUrl = 'ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Files';
config.filebrowserImageUploadUrl = 'ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Images';
config.filebrowserFlashUploadUrl = 'ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Flash';
config.filebrowserWindowWidth = '800';  Browse Server açılır penceresinin boyut ayarı
config.filebrowserWindowHeight = '500';
}
CKFinder.setupCKEditor(null, '.. /ckfinder/'); Anahtarın yolunun gerçek yerleşimle örtüştüğüne dikkat edin

CKFinder'ın yapılandırması:

"ckfinder\" altında kullanıcı kontrol config.ascx dosyasını açın ve BaseUrl yolunu değiştirin:

BaseUrl = "~/ckfinder/userfiles/"; veya BaseUrl = "ckfinder/userfiles/";





Ekstra bir nokta: IIS'de test etmek faydalıdır. Aksi takdirde, yükleme başarısız olursa, yapılandırmada bir sorun olduğunu düşünebilirsiniz.

CKEditor'da yapılandırma tamamlandıktan sonra yükleme fonksiyonu var, ama ya görüntü dosyası orijinal görüntü adı ise ve onu rastgele bir dosya adına değiştirmek isterse? Sonra üçüncü adıma bak.

Adım 3: CKFinder'ın kaynak kodunu değiştirin. CKFinder kendi kaynak kodu olan diziniyle birlikte gelir: /CKFinde/_source

VS'de CKFinde/_source/CKFinder.Net.sln için yeni bir güncel proje oluşturun, burada indirilen çözüm dosyası VS2008'de açılmayabilir, yeni bir proje eklemeyi veya VS'nin daha yeni sürümünü kullanarak açmayı seçebilirsiniz.

1) /Settings/ConfigFile.cs dosyasını açın

27 satır bulun ve bir nitelik ekle: public bool RandomReName; Rastgele yeniden adlandırma

67 satır bulup şu anda bu özelliğe bir değer atayın: RandomReName = true; Varsayılan değer doğrudur

Kapalı dosyayı kaydet

2) /Connector/Config.cs dosyasını açın

62 satırı bul, bir öznitelik ekle:

public bool RandomReName

{

{ returnSettings.ConfigFile.Current.RandomReName; }

}

Kapalı dosyayı kaydet

3) /Connector/CommandHandlers/FileUploadCommandHandler.cs dosyasını açın

64. satırı bulun ve bir karar kodu ekleyin:

if ( Config.Current.RandomReName) // Rastgele bir isim kullanın

sFileName =DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." +sExtension;


Kapalı dosyayı kaydet
4) Projeyi yeniden oluştur, /ckfinder/_source/bin/Debug/CKFinder.dll /ckfinder/bin/Release/CKFinder.dll üzerine yaz veya web sitesi projesine daha önce eklenen referansları kaldırıp dll'i CKFinder.Net projesinden yeniden kaldır
Son adım: /ckfinder/config.ascx aç
40 satır bulun ve bir öznitelik ekleyin: (Aslında, bunu ekleyebilir veya eklemeyebilirsiniz, çünkü önceden varsayılan bir değer seti vardı, ancak orijinal adı kullanırken false olarak ayarlanmalıdır)

//上传完毕后使用随机文件名

RandomReName = doğru;


Kayıt kapalı

Tamam, yapılandırma başarılı olduğuna göre, CKEditor'da bir yükleme fonksiyonu var. Diğer fonksiyonların ayarları zamanınız olduğunda çalışmaya devam edecek~

Bir hatırlatma daha: CKEeditor ve CKFinder klasörlerinde alt çizgili isimler gibi gereksiz birçok şey var, .net projeleri php, asp gerektirmiyor.

Dosya yüklemede hata olursa: Dosya güvenlik nedeniyle görüntülenemiyor. Lütfen sistem yöneticinizle iletişime geçin ve CKFinder profilini kontrol edin.

config.ascx dosyasını değiştirmeniz gerekiyor

public override bool CheckAuthentication()
{
reture yanlış;
}
Değiştirildi:

public override bool CheckAuthentication()
{

Form doğrulama
returnRequest.IsAuthenticated;

}



3. Sayfada CKEditor kontrolünü uygulayın [iki yöntem, a ve b]

[C: Sıkıştırılmış paketteki INSTALL.html alıntılanıyor]

CKEditor'u ASP.NET sayfanızla entegre etmek istiyorsanız, aşağıda belirtilen adımları izleyin.

1. Resmi CKEditor indirme sitesine gidin ve hem CKEditor 3.x hem de CKEditor'un en son sürümlerini indirin ASP.NET Control.
2. Her iki kurulum paketini de istediğiniz konuma açın. N'i kaldırın.
3. Web sitenize CKEditor'a ASP.NET Control için bir referans ekleyin.
     Visual Studio'da Add Reference komutunu kullanın ve kurulum paketi için açılmamış CKEditor'dan bin\Release\CKEditor.NET.dll dosyasına ASP.NET göz atın. DLL dosyasını uygulamanızın bin klasörüne manuel olarak kopyalayabilirsiniz.
4. Paketlenmemiş düzenleyici dosyalarını CKEditor 3.x kurulum paketinden kopyalayıp web sitenizin uygulama dizinine yapıştırın.
5. Sayfanızda ASP.NET Control için CKEditor'u kaydedin:
<%@ Register assembly="CKEditor.NET" namespace="CKEditor.NET" TagPrefix="CKEditor" %>
6. Sayfa gövdesine bir CKEditor örneği ekleyin:
<CKEditor:CKEditorControl ID="CKEditor1" runat="sunucu"></CKEditor:CKEditorControl>
【b】

1. <head>Sayfaya ilgili js referansını ekleyin:

    <scrip t tipini kaldır="text/javascrip remove t" language="javascrip remove t" src="ckfinder/ckfinder.js"></scrip去掉t>
    <scrip t tipini kaldır="text/javascrip t'yi kaldır" dil="javascrip t'yi kaldır" src="ckeditor/ckeditor.js"></scrip去掉t>
2. Sonra, kontrolün yerleştirilmesi gereken <body>yere aşağıdaki kodu ekleyin ve şu kullanım yöntemleri vardır:

(1) Belirtilen sınıf özniteliğini kontrole ekleyin
    <textarea id="textarea1" name="editor1" class="ckeditor">merhaba!</textarea>
Sunucu Kontrolleri:
    <asp:TextBox ID="TextBox1" runat="sunucu" TextMode="MultiLine" CssClass="ckeditor"></asp:TextBox>

(2) js kodu enjekte edin - burada js kodu en iyi kontrol noktasından sonra veya içinde yazılır <head>
    <textarea id="textarea1" name="editor1">merhaba!</textarea>
    <scrip remove t type="text/javascrip remove t" >
        CKEDITOR.replace('editor1', { yükseklik:400, genişlik:800 });
    . .</scrip去掉t>
Sunucu Kontrolleri:
    <asp:TextBox ID="mckeditor" runat="sunucu" TextMode="MultiLine"></asp:TextBox>
    <scrip remove t type="text/javascrip remove t" >
        CKEDITOR.replace('<%=mckeditor. ClientID %>');
    . .</scrip去掉t>
=============================================================================================================
İkinci referans:
asp.net ckeditor 3.0.1 ve ckfinder_aspnet_1.4.1.1 yapılandırma yöntemi
http://ckeditor.com.cn/docs/'ın önerilerine göre, CKEditor'un web sayfasında yapılandırıldığı ve tarayıcıda görüntülendiğinde CKEditor'un arayüzünün gerçekten çok güzel olduğunu düşünüyorum, ancak resim yükleme fonksiyonunu denemek istediğimde görseli yükleme butonunu görmedim.

Çevrimiçi aramaya devam ettikçe, "CKEditor'un kendisinin bir yükleme fonksiyonu yok ve yükleme fonksiyonunu sağlamak için CKFinder ile entegre edilmesi gerekiyor" sonucuna varıldı.
Sonra CKFinder 1.4.1.1 for Asp.net indirin, fermuarını açın ve ckfinder klasörünü projenin kök dizinine koyabilirsiniz - çünkü internetteki birçok kaynak, CKEditor ve CKFinder'ı aynı seviye dizine koymanın en iyisi olduğunu söylüyor. Ve böylece projemizde sebepsiz yere iki klasör daha olacak. Ben de bir kod temizliği fetişim var, sanırım,
Yazara saygı göstergesi olarak bir klasör bırakın, bu yeterli olur. İki kişini tutmak beni çok rahatsız ederdi.


CKFinder'ı CKEditor'a entegre etmeden önce, CKFinder'ı biraz yapılandırmamız gerekiyor. Akıllı arkadaşlar, dosya yükleme eklentisi olduğu için yapılandırma yapılacak şeylerin çoğunun dosya yükleme yolu olduğunu düşünmelidir.

CKFinder'ın varsayılan yükleme yolu, userfiles klasörü kendi dizininde yer alıyor, ancak CKFinder'ı CKEditor klasörüne koydum, görseli userfiles'te saklarsam, sistem üç katmanlı klasörü atlayarak dosyayı veya görüntüyü bulmak zorunda, bu yüzden görüntüyü projenin kök dizinindeki upFile klasörüne yüklemeyi planlıyorum.
Bu işlevi uygulamak için, CKFinder altındaki config.ascx dosyasını BaseUrl = "/ckfinder/userfiles/" olarak BaseUrl = "~/upFile/" olarak değiştirmeniz gerekir. Sonra, CKFinder.dll dosyalarını CKFinder/bin klasöründen sistem projesinin bin klasörüne kesin. Ya da CKFinder.dll referanslar ekleyerek projeye dahil edin.
Sonra, dosya yükleme ile CKEditor'u kullanabiliriz:

CKFinder klasörünü CKEditor klasörüne koyun ve sayfada her ikisinin js dosyalarını içe aktarın:

<scrip tsrc="http://www.cnblogs.com/ckeditor/ckeditor.js" type="text/javascrip kaldır t"></scrip去掉t>

<scrip t kaldır src="http://www.cnblogs.com/ckeditor/ckfinder/ckfinder.js" type="text/javascrip remove t t"></scrip去掉t>
Editörü bir kontrole yönlendirmenin iki yolu vardır:

Bunlardan biri istemci kontrol metin alanını kullanmaktır:

<textarea satırlar="20" cols="40" name="txtContent" id="txtContent"></textarea>

<scrip remove t type="text/javascrip remove t" >

var editor = CKEDITOR.replace('txtContent');

CKFinder.SetupCKEditor(editör, 'http://www.cnblogs.com/ckeditor/ckfinder/');

. .</scrip去掉t>

İkincisi ise sunucu tarafı kontrol metin kutusunu kullanmaktır:

<asp:TextBox id="txtContent" TextMode="MultiLine" Text='<%# Bind("info") %>' runat="server"></asp:TextBox>

<scrip remove t type="text/javascrip remove t" >

var editor = CKEDITOR.replace('txtContent');

CKFinder.SetupCKEditor(editör, 'http://www.cnblogs.com/ckeditor/ckfinder/');

</scrip去掉t>Kişisel olarak, asp.net bir program olduğu için sunucu tarafı kontrolleri kullanın. İstemci kontrollerinden biraz daha yavaş çalışsa da, geliştirme biraz daha hızlı. Ve programcılar olarak, her zaman hoşumuza gelen seçeneği seçmeden önce tüm olasılıkları denemeyi severiz.

Aslında, Text='<%# Bind("info") %>' kullanmadan da kontrollere değerler atayabilir ve bunu doğrudan backcode'da kullanabilirsiniz

this.txtContent.Text="Başlangıç değeri"
    Ayrıca mümkün. Değeri almak için doğrudan aşağıdaki kodu da kullanabilirsiniz:

CKFinder ve CKEditor kodu. Sayfayı doğrudan düzenleyiciyle çalıştırdığımda, derleyici aşağıdaki hatayı veriyor:

string content=this.txtContent.Text
    Not: TextMode="MultiLine" özniteliği şarttır, aksi takdirde değer null olur.

Programı hata ayıklamadan önce sadeleştirmedim

"ControlDesigner" tür veya isim alanı adı "System.Web.UI.Design" isim alanında yoktur (assembly referansı eksik mi?)

Hata ckeditor\ckfinder\_source\FileBrowserDesigner.cs'ın 19. satırında, bu yüzden dosyayı basitleştirin:

İlk adım, ckeditor'u sadeleştirmektir: _samples ve _source klasörlerini silinir ve dil dizininde sadece üç dil dosyası tutulabilir: en.js, zh.js ve zh-cn.js;

İkinci adım ckfinder'ı sadeleştirmek: _samples ve _source klasörlerini sil ve sadece en.js, zh.js ve zh-cn.js dil dosyalarını dil dizininde tut.

Buradaki js kodunun ikinci satırına dikkat edin: CKFinder.SetupCKEditor(editör, 'http://www.cnblogs.com/ckeditor/ckfinder/'); , burada "http://www.cnblogs.com/ckeditor/ckfinder/" ckfinder'ın mevcut sayfaya olan göreli yoludur,
Lütfen kodu doğrudan kopyalayıp yapıştırmayın, aksi takdirde görüntü yüklenirken aşağıdaki hata ortaya çıkabilir:

Açıklama: HTTP 404. Aradığınız kaynak (veya bağımlılıklarından biri) kaldırılmış olabilir, adı değişmiş olabilir ya da geçici olarak erişilemez olabilir. Lütfen aşağıdaki URL'yi kontrol edin ve doğru yazıldığından emin olun.

İstenen URL: /admin/ckeditor/ckfinder/core/connector/aspx/connector.aspx

Yani, benim gibi ckfinder'ı ckeditor klasörüne koymak istemiyorsanız, burada yol değişikliklerini doğru şekilde doldurduğunuz sürece sorun değil.

Bunun tüm emek olarak kabul edileceğini düşünmüştüm ama görseli yüklediğimde aşağıdaki prompt çıktı:

Güvenlik nedenleriyle dosya görüntülenemiyor. Lütfen sistem yöneticinizle iletişime geçin ve CKFinder profilini kontrol edin.

Söylediği gibi, iyi şeyleri yemek zor değildir. En iyi öğretmene sorabilirim - Baidu. Yukarıdaki prompt bilgilerini Baidu arama kutusuna kopyalayın ve arabaya girdikten sonra PHP entegrasyonu ckeditor'ı hakkında bir gönderi buldum. İşte nasıl yapılacak:

CKFinder altında config.ascx dosyasını değiştirerek halka açık geçersiz bool CheckAuthentication() fonksiyonunun dönüş değerini false yerine doğruya dönüştürün.

Tekrar test ettim, görüntü başarıyla yüklendi!

Puan

Katılımcı sayısı1MB+2 Katkı+2 Çökmek sebep
Vay canına. + 2 + 2 Çok güçlü!

Tüm puanları gör





Önceki:asp.net boşluk açılır listesi veritabanını bağlar
Önümüzdeki:Asp.Net'de kimlik doğrulama kontrolünü mümkün kılmak için kod nasıl kullanabilirim?
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com