转载自http://www.it165.net/pro/html/201306/6055.html

先下载CKEditor

我们修改 /Scripts/ckeditor/config.js

让图片上传能够正常..

view source print ?
01. /*
02. Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
03. For licensing, see LICENSE.html or http://ckeditor.com/license
04. */
05.  
06. CKEDITOR.editorConfig = function( config )
07. {
08. config.filebrowserImageUploadUrl = "/fileupload.aspx";
09. };

其中我们让档案上传的处理路径指到跟执行目录下 fileupload.aspx

之后我们来撰写关于 fileupload.aspx 的部分..

fileupload.apsx 关于 .aspx 得部分只需要留下第一行其它都要删除

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="fileupload.aspx.cs" Inherits="SimpleConvetCKEditorHTMLToOpenXML.fileupload" %>
fileuploas.aspx.cs 的部分:

view source print ?
01. using System;
02. using System.IO;
03. using System.Web;
04.  
05. namespace SimpleConvetCKEditorHTMLToOpenXML
06. {
07. public partial class fileupload : System.Web.UI.Page
08. {
09. protected void Page_Load(object sender, EventArgs e)
10. {
11.  
12. HttpPostedFile uploads = Context.Request.Files["upload"];
13. string ckediotfuncnum = Context.Request["CKEditorFuncNum"];
14. var t = Guid.NewGuid().ToString("N");
15.  
16. //如果暂存数据夹不在就建立
17. if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "uploaded\\"))
18. {
19. Directory.GetCreationTime(AppDomain.CurrentDomain.BaseDirectory + "uploaded\\");
20. }
21.  
22. //判断图片是否为.png or .jpg
23. //当然这方法并非很好
24. //建议作法依然要打打开图片做检查会比较安全
25. if (Path.GetExtension(uploads.FileName).ToLower() == ".jpg" || Path.GetExtension(uploads.FileName).ToLower() == ".png")
26. {
27. string url = "/uploaded/" + t + Path.GetExtension(uploads.FileName);
28. File.WriteAllBytes(AppDomain.CurrentDomain.BaseDirectory + "uploaded\\" + t + Path.GetExtension(uploads.FileName), StreamToBytes(uploads.InputStream));
29. Response.Write("<script>window.parent.CKEDITOR.tools.callFunction(" + ckediotfuncnum + ",\"" + url + "\");</script>");
30.  
31. }
32. else
33. {
34. Response.Write("<script>alert('上传格式错误');</script>");
35. Response.Write("<script>window.parent.CKEDITOR.tools.callFunction(" + ckediotfuncnum + ");</script>");
36. }
37. }
38.  
39. /// <summary>
40. /// 将Stream 转成  Byte[]
41. /// </summary>
42. /// <param name="stream"></param>
43. /// <returns></returns>
44. private byte[] StreamToBytes(Stream stream)
45. {
46. stream.Position = 0;
47. var buffer = new byte[stream.Length];
48. for (int totalBytesCopied = 0; totalBytesCopied < stream.Length; )
49. totalBytesCopied += stream.Read(buffer, totalBytesCopied, Convert.ToInt32(stream.Length) - totalBytesCopied);
50. return buffer;
51. }
52.  
53.  
54. }
55. }

再来我们看一下关于 转成Word 檔的部分..

首先,你得先去下载必须的library .

Open XML SDK 2.0 for Microsoft Office


 

安装后我计算机是Windows 8 位置会大概在..


 

再来去下载一个方便的工具HtmlToOpenXML


 

接下来,就可以开始写程序…

view source print ?
01. using System;
02. using System.IO;
03. using DocumentFormat.OpenXml;
04. using DocumentFormat.OpenXml.Packaging;
05. using DocumentFormat.OpenXml.Wordprocessing;
06. using NotesFor.HtmlToOpenXml;
07.  
08. namespace SimpleConvetCKEditorHTMLToOpenXML
09. {
10. public partial class demo : System.Web.UI.Page
11. {
12. protected void Page_Load(object sender, EventArgs e)
13. {
14.  
15. }
16.  
17. protected void btnConvertToWord_Click(object sender, EventArgs e)
18. {
19. var fileName = Guid.NewGuid().ToString("N") + ".docx";
20. var filePathName = AppDomain.CurrentDomain.BaseDirectory + "words\\" +fileName;
21. var html = CKEditorControl1.Text;
22.  
23. using (MemoryStream generatedDocument = new MemoryStream())
24. {
25. using (WordprocessingDocument package = WordprocessingDocument.Create(generatedDocument, WordprocessingDocumentType.Document))
26. {
27. MainDocumentPart mainPart = package.MainDocumentPart;
28. if (mainPart == null)
29. {
30. mainPart = package.AddMainDocumentPart();
31. new Document(new Body()).Save(mainPart);
32. }
33.  
34. HtmlConverter converter = new HtmlConverter(mainPart);
35. Body body = mainPart.Document.Body;
36. //如果有插入图片,这一行很重要
37. converter.BaseImageUrl = new Uri("http://localhost:16777");
38. var paragraphs = converter.Parse(html);
39. for (int i = 0; i < paragraphs.Count; i++)
40. {
41. body.Append(paragraphs[i]);
42. }
43.  
44. mainPart.Document.Save();
45. }
46.  
47. File.WriteAllBytes(filePathName, generatedDocument.ToArray());
48. ltlMessage.Text = "已输出至" "words\\" + fileName;
49. }
50.  
51. }
52. }
53. }

如果,有遇到

"The type 'System.IO.Packaging.Package' is defined in an assembly that is not referenced. You must add a reference to assembly 'WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"


 

需要引入一个library . WindowsBase


 

结果:


 

CKEditor输出成Word文件(包含图片上传)相关推荐

  1. PHP+CKEditor 3配置详细说明(包括图片上传)

    首先,我们要在页面中加入CKEditor的js文件: <head>         ...         <script type="text/javascript&qu ...

  2. Swift中文件和图片上传处理

    前言:基于Alamofire4.5网络框架开发的Swift项目中上传文件和图片代码参考. 上传文件 extension HttpRequestService {typealias UploadDone ...

  3. 链接ftp,把文件或图片上传到ftp指定的文件夹中

    /******************************************************************** *  * * Filename : .java * Auth ...

  4. Asp.Net Core文件或图片上传

    管理后台上传的图片或文件可能也需要在 Api 项目能够访问,考虑到文件的统一管理,后台的文件默认 是上传到 Api 项目里的. Web 项目里的配置文件 appsetting.json 中的 ApiS ...

  5. CKEditor的使用,并实现图片上传

    ckeditor是一款富文本编辑器,类似于论坛帖子下边的回复输入框. 1.先要下载相应js文件,点我下载.根据自己的需求选择插件的丰富程度,下载后解压得到一个文件夹,放到webRoot目录下. 2.在 ...

  6. HTTP Content-Type (MIME) el-upload文件、图片上传 | 文件改名 | 大文件 | 文件下载

    MIME 为数据格式标签:最初 MIME 是用于电子邮件系统的,后来 HTTP 也采用了这一方案. 在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息. Conten ...

  7. java 存储png文件_vue图片上传及java存储图片(亲测可用)

    1.前言 在使用elementui的upload组件时,我一直无法做到上传的图片和其他数据一起提交.单纯的上传文件,java的存储图片的方式也有局限性. 我知道的后端保存图片有两种方式:一种是直接存储 ...

  8. js文件、图片上传(原生方法和jquery的ajax两种都有)

    <!DOCTYPE html> <html> <head> <title>test</title> </head> <bo ...

  9. Java实现七牛云文件或图片上传下载

    写在前面 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:人工智能学习网站 文章目录 写在前面 一.准备工作 1.1.为什么选择七牛云? 1.2.七牛云注册 二.ja ...

  10. python autoit上传文件_结合python+selenium使用AutoIt V3实现文件、图片上传

    1.下载.安装AutoIt V3 下载官网:https://www.autoitscript.com/site/autoit/downloads/ 2.AutoIt V3组件介绍 AutoIt Win ...

最新文章

  1. 17个Python骚操作,你都Ok吗?
  2. Spring踩坑记录
  3. git常见操作--忽略文件以及常用命令【转】
  4. 从技术面试官的角度来谈谈简历和面试
  5. 【Android UI设计与开发】3.引导界面(三)实现应用程序只启动一次引导界面
  6. 淘宝flink和storm书籍调研
  7. 【学习笔记】【C语言】结构体
  8. Unix基本系统数据类型和stat结构体
  9. try...catch()
  10. html5页面主题,HTML5页面开发笔记
  11. Mybatis-puls打印sql语句
  12. linux内核那些事之E820
  13. 让CentOS 5.3支持ntfs分区
  14. Linux 命令(86)—— head 命令
  15. 开发机器学习应用程序的步骤
  16. 如何在Mac电脑中设置投屏?Mac投屏,Mac电脑无线投屏教程
  17. html留言页面设计,html的留言板制作(js)
  18. 杰理之ifi_camera跑sfc的启动时间【篇】
  19. Mac没有右Control的解决办法
  20. 互联网业务实战(一)--今日头条文章发布实现

热门文章

  1. 移动智能终端与移动互联网的发展走向预估
  2. 南京农业大学计算机二级报名时间,2016年3月江苏南京农业大学计算机等级考试报名通知...
  3. k8s部署手册-v06
  4. 【系列文章】面向自动驾驶的三维点云处理与学习(3)
  5. 小型计算机应用场景,小型工控机应用场景非常多样化
  6. @所有人 阿里云原生团队向你发出offer邀请,在线等!
  7. 杂谈之非技术工作能力
  8. 使用 C# 开发智能手机软件:推箱子(十三)
  9. 滚珠螺杆导程对精度有影响吗?
  10. 如何用python实现猜单词小游戏