狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【W(wǎng)eb開發(fā)】C#實(shí)現(xiàn)用onlyOffice在線編輯Office文檔

admin
2025年5月27日 0:23 本文熱度 635

在C#中實(shí)現(xiàn)ONLYOFFICE在線編輯Office文檔需要結(jié)合前端頁(yè)面嵌入編輯器和后端處理文檔存儲(chǔ)與回調(diào)邏輯。以下是基于搜索結(jié)果的實(shí)現(xiàn)步驟及關(guān)鍵代碼示例:

一、環(huán)境準(zhǔn)備

  1. 部署ONLYOFFICE Document Server

使用Docker快速部署(推薦方式):

docker run -i -t -d -p 9000:80 --restart=always onlyoffice/documentserver

需確保服務(wù)器端口開放,并配置JWT_SECRET以增強(qiáng)安全性。

  1. 配置C#開發(fā)環(huán)境

    • 安裝.NET Framework 4.5+或.NET Core。

    • 下載ONLYOFFICE的C#示例代碼(如MVC或WebForms版本)。


二、核心實(shí)現(xiàn)步驟

1. 前端頁(yè)面嵌入編輯器

在ASP.NET頁(yè)面中通過(guò)JavaScript初始化編輯器,需傳遞文檔信息和回調(diào)URL:

<!-- 引用ONLYOFFICE API -->

<script src="http://[DocumentServer_IP]:9000/web-apps/apps/api/documents/api.js"></script>


<div id="editor"></div>

<script>

    var docEditor = new DocsAPI.DocEditor("editor", {

        document: {

            fileType: "docx",

            key: "<%= DocumentKey %>", // 唯一標(biāo)識(shí),每次編輯需更新

            title: "<%= DocumentTitle %>",

            url: "<%= DocumentUrl %>"  // 文檔實(shí)際存儲(chǔ)路徑

        },

        documentType: "text",

        editorConfig: {

            mode: "edit", // 模式:edit或view

            callbackUrl: "<%= CallbackUrl %>", // 保存回調(diào)接口

            lang: "zh-CN",

            customization: {

                autosave: false

            }

        }

    });

</script>?

參數(shù)說(shuō)明:

  • key:文檔唯一標(biāo)識(shí),每次保存后需更新以觸發(fā)版本變更。

  • callbackUrl:文檔保存后ONLYOFFICE服務(wù)器調(diào)用的后端接口。

2. 后端處理文檔存儲(chǔ)與回調(diào)

(1)文件上傳與下載接口

實(shí)現(xiàn)文檔的讀取與存儲(chǔ)邏輯(示例為ASP.NET MVC控制器):

public class DocumentController : Controller

{

    // 獲取文檔內(nèi)容

    public ActionResult GetFile(string fileId)

    {

        var filePath = Server.MapPath("~/Documents/" + fileId);

        return File(filePath, "application/octet-stream");

    }


    // 保存文檔

    [HttpPost]

    public ActionResult SaveFile(string fileId)

    {

        var filePath = Server.MapPath("~/Documents/" + fileId);

        Request.InputStream.CopyTo(System.IO.File.Create(filePath));

        return Json(new { error = 0 });

    }

}

(2)處理ONLYOFFICE回調(diào)

實(shí)現(xiàn)callbackUrl接口,驗(yàn)證JWT并處理保存邏輯:

public class CallbackHandler : IHttpHandler

{

    public void ProcessRequest(HttpContext context)

    {

        var json = new StreamReader(context.Request.InputStream).ReadToEnd();

        dynamic data = JsonConvert.DeserializeObject(json);


        // 驗(yàn)證JWT簽名

        var jwtSecret = "Your_JWT_Secret";

        var payload = JWT.Decode(data.token.ToString(), jwtSecret);

        dynamic payloadData = JsonConvert.DeserializeObject(payload);


        if (payloadData.status == "must_save")

        {

            var fileUrl = payloadData.url.ToString();

            var newKey = Guid.NewGuid().ToString(); // 生成新key以更新版本

            // 下載并保存文件

            using (var client = new WebClient())

            {

                client.DownloadFile(fileUrl, Server.MapPath("~/Documents/" + newKey + ".docx"));

            }

            // 返回成功響應(yīng)

            context.Response.Write(JsonConvert.SerializeObject(new { error = 0 }));

        }

    }

}?

關(guān)鍵點(diǎn)

  • 使用JWT庫(kù)驗(yàn)證請(qǐng)求合法性,防止未授權(quán)訪問(wèn)。

  • 每次保存后生成新的document.key,確保版本更新。

三、權(quán)限與安全配置

  1. 權(quán)限管理
    結(jié)合ASP.NET Identity或自定義鑒權(quán)邏輯,控制用戶對(duì)文檔的讀寫權(quán)限。

  2. JWT安全配置
    在ONLYOFFICE啟動(dòng)時(shí)設(shè)置JWT_SECRET,并在后端驗(yàn)證:

docker run ... -e JWT_SECRET=your_secret_key ...

后端驗(yàn)證示例:

var isValid = JWT.Validate(token, jwtSecret);

if (!isValid) throw new SecurityException("Invalid token");

四、完整示例與調(diào)試

  1. 參考官方示例
    下載ONLYOFFICE提供的C#示例代碼,修改settings.config中的文檔服務(wù)器地址和存儲(chǔ)路徑。

  2. 常見問(wèn)題排查

    • 文檔無(wú)法保存:檢查callbackUrl是否可訪問(wèn),確保返回{ "error": 0 }

    • 中文亂碼:在Docker中掛載中文字體目錄。

五、擴(kuò)展功能

  1. 協(xié)同編輯
    通過(guò)mode: "edit"和實(shí)時(shí)WebSocket通信支持多人協(xié)作。

  2. 歷史版本
    結(jié)合數(shù)據(jù)庫(kù)記錄document.key與文件版本,實(shí)現(xiàn)版本回溯。

  3. 格式轉(zhuǎn)換
    調(diào)用ONLYOFFICE API將文檔導(dǎo)出為PDF或其他格式。

實(shí)現(xiàn)效果:用戶可通過(guò)瀏覽器直接編輯Word/Excel/PPT文檔,編輯內(nèi)容自動(dòng)保存至服務(wù)器,支持多人實(shí)時(shí)協(xié)作。通過(guò)上述代碼和配置,可快速集成到現(xiàn)有OA或文檔管理系統(tǒng)中。

參考來(lái)源:ONLYOFFICE官方文檔、Docker部署指南及開發(fā)者社區(qū)示例。


該文章在 2025/5/27 11:51:21 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved