Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 15904|Resposta: 0

[ASP.NET] asp.net usar ckeditor_3.6.2+ckfinderckfinder_aspnet_2.1.1 para configurar a função de upload da imagem

[Copiar link]
Publicado em 18/04/2015 19:11:55 | | |

As versões mais recentes do CKEditor e do CKFinder podem ser baixadas no site oficial (http://cksource.com).

Coloque os dois recursos acima no diretório raiz do site: /CKEditor (aqui na versão 3.6.2, você precisa colocar a pasta _Samples\ckeditor na pasta comprimida) e /CKFinder (insensível a maiúsculas, você pode colocar a pasta aqui diretamente). )

Observe, aqui às vezes há um erro na geração. Por exemplo, existem tags duplicadas do tipo AssemblyTitle, principalmente porque o site tem mais de uma AssemblyInfo.cs para deletar o arquivo baixado. Ou delete a pasta _source. Se você tiver alguma dúvida aqui, pode me contatar: meu QQ: 515072775

Usando o CKEditor em uma página:

<textarea cols="80" id="prcontent" name="content" linhas="50"> Olá, seu uso foi bem-sucedido! </textarea>

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

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

. .</scrip去掉t>

O CKEditor não vem com função de upload, então precisa ser enviado com o CKFinder

Passo 1: O site precisa referenciar o dll do CKFinder (diretório: /CKFinder/bin/Release/CKFinder.dll)

Passo 2: Configure o config.js do CKEditor (diretório: /CKEditor/config.js) na função CKEDITOR.editorConfig, e funções desnecessárias podem ser removidas


CKEDITOR.editorConfig = function(config) {
config.filebrowserBrowseUrl = 'ckfinder/ckfinder.html'; Não escreva "~/ckfinder/..." ou "/ckfinder/..."
config.filebrowserImageBrowseUrl = 'ckfinder/ckfinder.html? Tipo=Imagens';
config.filebrowserFlashBrowseUrl = 'ckfinder/ckfinder.html? Tipo=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';  A configuração de tamanho do pop-up do servidor de navegação
config.filebrowserWindowHeight = '500';
}
CKFinder.setupCKEditor(null, '.. /caçador/'); Note que o caminho do localizador corresponde à posição real

Configuração do CKFinder:

Abra o controle de usuário config.ascx em "ckfinder\" e mude seu caminho BaseUrl:

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





Aqui vai um ponto extra: é útil testar no IIS. Caso contrário, se o upload não der certo, você vai achar que há algo errado com a configuração.

O CKEditor tem uma função de upload após a configuração ser concluída, mas e se o arquivo de imagem for o nome original e quiser mudar para um nome aleatório? Depois olhe para o terceiro passo.

Passo 3: Modificar o código-fonte do CKFinder. O CKFinder vem com seu próprio código-fonte, diretório: /CKFinde/_source

Crie um novo projeto atual no VS para CKFinde/_source/CKFinder.Net.sln, o arquivo da solução baixado aqui pode não abrir no VS2008, você pode escolher adicionar um novo projeto ou usar uma versão mais recente do VS para abri-lo.

1) Abra o arquivo /Settings/ConfigFile.cs

Localize 27 linhas e adicione um atributo: bool público RandomReName; Renomeie aleatoriamente

Localize 67 linhas e atribua um valor à propriedade agora: RandomReName = true; O valor padrão é verdadeiro

Salvar o arquivo fechado

2) Abra o arquivo /Connector/Config.cs

Localize as 62 linhas, adicione um atributo:

bool público RandomReName

{

get { returnSettings.ConfigFile.Current.RandomReName; }

}

Salvar o arquivo fechado

3) Abrir o arquivo /Connector/CommandHandlers/FileUploadCommandHandler.cs

Localize a linha 64 e adicione um código de sentença:

if ( Config.Current.RandomReName) // Use um nome aleatório

sFileName =DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." +sExtensão;


Salvar o arquivo fechado
4) Regenerar o projeto, sobrescrever /ckfinder/_source/bin/Debug/CKFinder.dll /ckfinder/bin/Release/CKFinder.dll ou remover as referências previamente adicionadas ao projeto do site e remover novamente a dll do projeto CKFinder.Net
Último passo: Abrir /ckfinder/config.ascx
Localize 40 linhas e adicione um atributo: (Na verdade, você pode adicionar isso ou não, porque havia um valor padrão definido antes, mas ele deve ser definido como falso ao usar o nome original)

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

RandomReName = true;


Salvar fechado

Ok, agora que a configuração foi bem-sucedida, o CKEditor pode ter uma função de upload. As configurações de outras funções continuarão sendo estudadas quando você tiver tempo~

Mais um lembrete: as pastas CKEditor e CKFinder têm muitas coisas desnecessárias, como nomes com sublinhados, projetos .net não precisam de php, asp.

Se houver um erro no upload de um arquivo: O arquivo não pode ser visualizado por razões de segurança. Por favor, entre em contato com o administrador do sistema e verifique o perfil do CKFinder.

Você precisa modificar o arquivo config.ascx

override público bool CheckAuthentication()
{
reture false;
}
Modificado para:

override público bool CheckAuthentication()
{

Validação de forma
returnRequest.IsAuthenticated;

}



3. Aplicar o controle CKEditor na página [dois métodos, a e b]

[R: Citando o INSTALL.html no pacote comprimido]

Se você quiser integrar o CKEditor à sua página de ASP.NET, siga os passos descritos abaixo.

1. Acesse o site oficial de download do CKEditor e baixe as versões mais recentes tanto do CKEditor 3.x quanto do CKEditor para ASP.NET Control.
2. Descompacte ambos os pacotes de instalação para a localização desejada Remova n.
3. Adicione uma referência ao CKEditor para ASP.NET Controle no seu site.
     No Visual Studio, use o comando Add Reference e navegue até o arquivo bin\Release\CKEditor.NET.dll do pacote de instalação descompactado CKEditor for ASP.NET instalado. Você também pode copiar manualmente o arquivo DLL para a pasta bin da sua aplicação.
4. Copie os arquivos do editor desempacotados do pacote de instalação CKEditor 3.x e cole no diretório de aplicativos do seu site.
5. Registre o CKEditor para ASP.NET Controle em sua página:
<%@ Assemblagem de registradores="CKEditor.NET" namespace="CKEditor.NET" tagPrefix="CKEditor" %>
6. Insira uma instância CKEditor no corpo da página:
<CKEditor:CKEditorControl ID="CKEditor1" runat="server"></CKEditor:CKEditorControl>
【b】

1. <head>Adicionar a referência correspondente ao js à página:

    <scrip remove t type="text/javascrip remove t" language="javascrip remove t" src="ckfinder/ckfinder.js"></scrip去掉t>
    <scrip remove t type="text/javascrip remove t" linguagem="javascrip remove t" src="ckeditor/ckeditor.js"></scrip去掉t>
2. Depois, <body>adicione o seguinte código ao local onde o controle precisa ser colocado, e existem os seguintes métodos de uso:

(1) Adicionar o atributo de classe especificado ao controle
    <textarea id="textarea1" nome="editor1" class="ckeditor">olá!</textarea>
Controles do servidor:
    <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" CssClass="ckeditor"></asp:TextBox>

(2) Injetar código js - aqui o código js é melhor escrito após o controle, ou <head>dentro dele
    <textarea id="textarea1" nome="editor1">olá!</textarea>
    <scrip remove t type="text/javascrip remove t" >
        CKEDITOR.replace('editor1', { altura:400, largura:800 });
    . .</scrip去掉t>
Controles do servidor:
    <asp:TextBox ID="mckeditor" runat="server" TextMode="MultiLine"></asp:TextBox>
    <scrip remove t type="text/javascrip remove t" >
        CKEDITOR.replace('<%=mckeditor. ClientID %>');
    . .</scrip去掉t>
=============================================================================================================
Segunda referência:
asp.net o método de configuração do ckeditor 3.0.1 e ckfinder_aspnet_1.4.1.1
De acordo com os prompts do http://ckeditor.com.cn/docs/, o CKEditor está configurado na página web e, quando visualizado no navegador, sinto que a interface do CKEditor é realmente muito bonita, mas quando quis tentar a função de upload da imagem, não vi o botão para enviar a imagem.

Continuando a busca online, a conclusão foi que "o CKEditor não possui uma função de upload em si, e ela precisa ser integrada ao CKFinder para alcançar a função de upload".
Depois, baixe o CKFinder 1.4.1.1 para Asp.net, descompacte e coloque a pasta ckfinder na diretório raiz do projeto – porque muitas fontes na Internet dizem que é melhor colocar CKEditor e CKFinder no mesmo diretório de nível. E dessa forma, teremos mais duas pastas no nosso projeto sem motivo. Eu mesmo tenho um fetiche por limpeza de código, acho,
Deixe uma pasta como sinal de respeito ao autor, isso já será suficiente. Ficar com dois me deixaria muito desconfortável.


Antes de integrarmos o CKFinder ao CKEditor, também precisamos configurar um pouco o CKFinder. Amigos inteligentes deveriam pensar facilmente que, como é um plug-in para upload de arquivos, a maioria das configurações são o caminho para enviar arquivos.

O caminho padrão de upload do CKFinder é a pasta userfiles em seu próprio diretório, mas coloquei o CKFinder na pasta CKEditor; se eu armazenar a imagem nos userfiles, o sistema precisa pular a pasta de três camadas para encontrar o arquivo ou imagem, então pretendo enviar a imagem para a pasta upFile no diretório raiz do projeto.
Para implementar essa função, você precisa modificar o arquivo config.ascx em CKFinder para mudar BaseUrl = "/ckfinder/userfiles/" para BaseUrl = "~/upFile/". Depois, corte os arquivos CKFinder.dll da pasta CKFinder/bin para a pasta bin do projeto do sistema. Ou introduza CKFinder.dll no projeto adicionando referências.
Em seguida, podemos usar o CKEditor com upload de arquivos:

Coloque a pasta CKFinder na pasta CKEditor e, na página, importe os arquivos js de ambos:

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

<scrip remove t src="http://www.cnblogs.com/ckeditor/ckfinder/ckfinder.js" type="text/javascrip remove t"></scrip去掉t>
Existem duas maneiras de referenciar o editor a um controle:

Uma delas é usar a área de texto de controle do cliente:

<textoarea linhas="20" cols="40" nome="txtConteúdo" id="txtConteúdo"></textarea>

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

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

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

. .</scrip去掉t>

A segunda é usar a caixa de texto de controle do lado do servidor:

<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 (editor, 'http://www.cnblogs.com/ckeditor/ckfinder/');

</scrip去掉t>Pessoalmente, acho que, como é um programa asp.net, então use os controles do lado do servidor. Embora rode um pouco mais devagar que os controles do cliente, o desenvolvimento é um pouco mais rápido. E, como programadores, sempre gostamos de tentar todas as possibilidades antes de escolher a que gostamos.

Na verdade, você também pode atribuir valores ao controle sem usar Text='<%# Bind("info") %>', e usá-lo diretamente no backcode

this.txtContent.Text="Valor inicial"
    Também é possível. Você também pode usar o código a seguir diretamente para obter o valor:

Código CKFinder e CKEditor. Quando executo a página diretamente com o editor, o compilador dá o seguinte erro:

string content=this.txtContent.Text
    Nota: O atributo TextMode="MultiLine" é essencial, caso contrário o valor será nulo.

Eu não otimizei antes de depurar o programa

O tipo ou nome do namespace "ControlDesigner" não existe no namespace "System.Web.UI.Design" (falta referência assembly?)

O erro está na linha 19 de ckeditor\ckfinder\_source\FileBrowserDesigner.cs, então simplifique o arquivo:

O primeiro passo é simplificar o ckeditor: exclua as pastas _samples e _source, e apenas três arquivos de idioma podem ser mantidos no diretório lang: en.js, zh.js e zh-cn.js;

O segundo passo é simplificar o ckfinder: exclua as pastas _samples e _source, e mantenha apenas os arquivos de idiomas en.js, zh.js e zh-cn.js no diretório lang.

Note a segunda linha de código js aqui: CKFinder.SetupCKEditor(editor, 'http://www.cnblogs.com/ckeditor/ckfinder/'); , onde o "http://www.cnblogs.com/ckeditor/ckfinder/" é o caminho relativo do ckfinder até a página atual,
Por favor, não copie e cole o código diretamente, caso contrário, o seguinte erro pode aparecer ao enviar imagens:

Descrição: HTTP 404. O recurso que você está procurando (ou uma de suas dependências) pode ter sido removido, ou seu nome mudou, ou está temporariamente indisponível. Por favor, verifique a URL a seguir e certifique-se de que está escrita corretamente.

URL solicitado: /admin/ckeditor/ckfinder/core/connector/aspx/connector.aspx

Então, se você não quiser colocar o ckfinder na pasta do ckeditor como eu fiz, tudo bem, desde que preencha o caminho corretamente aqui.

Achei que isso seria considerado todo o trabalho, mas quando enviei a imagem, apareceu o seguinte prompt:

Por razões de segurança, o arquivo não pode ser visualizado. Por favor, entre em contato com o administrador do sistema e verifique o perfil do CKFinder.

Não há como, como diz o ditado, coisas boas serem difíceis de comer. Só posso perguntar ao melhor professor - Baidu. Copie as informações do prompt acima para a caixa de busca do Baidu e, depois de entrar no carro, encontrei um post sobre o PHP, integração com o PHP. Veja como fazer:

Modificar o arquivo config.ascx sob CKFinder para alterar o valor de retorno da função pública de override bool CheckAuthentication() de return false para return true.

Testei novamente, a imagem foi enviada com sucesso!

Pontuação

Número de participantes1MB+2 contribuir+2 Colapso razão
uau + 2 + 2 Muito poderoso!

Veja todas as classificações





Anterior:asp.net banco de dados de binding de espaço dropdownlist
Próximo:Como uso código para tornar o controle de autenticação indisponível em Asp.Net?
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com