在员工离职或出于其它安全考虑,企业需要对员工创建或管理的文件进行管控,或对扫描出敏感信息的文件进行管控,限制文件下载。

如何限制企业用户下载特定文件

本定制方案仅适用于私有化WPS365版本

1. 方案概述

员工离职前,出于安全考虑,企业会对其创建或管理的文件进行管控。

管控会有两个实现方式:

  • 给文档加水印
  • 禁止员工下载

有安全管控需求时,比如文件扫描出敏感信息,用户的网络环境(内网或外网)、文件大小不满足管理规定,都有可能需要限制下载。

针对这两种情况,我们可以使用文档中心Web端(PC端)的开放能力,定制下载功能:

实现效果对文档进行管控后,员工下载文件时,会对文件进行处理,比如加水印;VZOKHCA4ABAFC也会限制下载,比如员工点击下载按钮,会出现下载失败的提示。TOMWRCA4ADQC6
支持端文档中心PC端
版本限制版本23-11a(含)以上
操作系统限制支持X86、XC

2. 使用指南

单文件下载判断拦截

👉能力

dc_file.PreCheckGetFileDownloadUrl

👉方法

PostGetFileDownloadUrl:单文件下载时获取文件下载 Url 进行定制

策略触发接口
dc_file.PreCheckGetFileDownloadUrl/file/u/v1/drives/{drive_id}/files/{file_id}/download

👉可检查的字段

名称类型是否可以修改描述版本号
AccountIdstring账户Id23-11a
CompanyIdstring企业Id23-11a
DriveIdstring文件存放的盘Id23-11a
FileIdstring文件Id23-11a

可以根据文件 ID调用 GetFileInfo 获取文件详细信息与路径

👉代码示例

// 单文件下载预检查
async function PreCheckGetFileDownloadUrl(
  ctx: service.PreCheckGetFileDownloadUrlContext
) {
  const input = ctx.ContextValue()

  // 根据文件id获取文件详细信息
  const fileInfo = componentInst.dc_drive.MAIN.GetFileInfo(
    ctx.GoContext(),
    input.DriveId,
    input.FileId
  )

  // 根据文件id获取文件路径
  const filePath = componentInst.dc_drive.MAIN.GetFilePath(
    ctx.GoContext(),
    input.DriveId,
    input.FileId
  )

  // TODO: 根据文件详情自定义限制条件,比如: 文件大小限制
  const ext = fileExt(fileInfo.Name)
  // 文件名包含“test_”则返回错误
  if (fileInfo.Name.includes('test_'))
    throw new JSBizError(400, 'test_ 文件被限制')
  return
}

👉效果截图

TOMWRCA4ADQC6

单文件下载时获取文件下载URL进行定制

👉能力

dc_file.PostGetFileDownloadUrl

👉方法

PostGetFileDownloadUrl:单文件下载时获取文件下载 Url 进行定制

策略触发接口
dc_file.PostGetFileDownloadUrl/file/u/v1/drives/{drive_id}/files/{file_id}/download

👉可检查的字段

名称类型是否可以修改描述版本号
FileIdstring文件Id23-11a
DriveIdstring文件存放的盘Id23-11a
Urlstring文件下载路径23-11a

文件下载路径可以通过埋点修改

返回值:

名称类型描述版本号
Urlstring文件下载路径23-11a

文件下载路径可以通过埋点修改

👉代码示例

修改返回的 url

可以导入添加水印、导出为PDF等第三方接口,对文件进行定制

// 单文件下载 url
async function PostGetFileDownloadUrl(
  ctx: service.PostGetFileDownloadUrlContext
) {
  const input = ctx.ContextValue()
  const output = ctx.Result()

  const fileInfo = componentInst.dc_drive.MAIN.GetFileInfo(
    ctx.GoContext(),
    input.DriveId,
    input.FileId
  )
  // 文件后缀为demo,则下载为自定义地址
  const ext = fileExt(fileInfo.Name)
  if (ext === 'demo') {
    // 修改返回路径
    output.Url = 'http://demo_url/' + fileInfo.Id
    return
  }
  return
}

👉效果截图

VZOKHCA4ABAFC

批量文件下载之前进行检查时对文件进行定制

👉能力

dc_file.PreCheckPostBatchDownloadFile

👉方法

PreCheckPostBatchDownloadFile:批量文件下载之前进行检查时对文件进行定制

策略触发接口
dc_file.PreCheckPostBatchDownloadFile/file/u/v1/drives/{drive_id}/files/batch_download/check

👉可检查字段

名称类型是否可以修改描述版本号
AccountIdstring账户Id23-11a
CompanyIdstring企业Id23-11a
FileIdsstring[]批量下载的文件Id列表23-11a
DriveIdstring文件存放的盘Id23-11a
WpsSidstring用来做url鉴权23-11a
WithChecksumboolean是否校验文件一致性23-11a
MaxSizenumber系统后台读取到的文件最大下载数量23-11a
MaxNumnumber系统后台读取到的文件最大下载大小23-11a

根据文件id 调用 GetFileInfo 可以获取文件具体信息

返回值: 无

👉代码示例

示例: 根据批量下载的文件夹列表获取文件下载路径

// 批量下载预检查
asyncfunctionPreCheckPostBatchDownloadFile(ctx: service.PreCheckPostBatchDownloadFileContext) {
    const input = ctx.ContextValue()

    // TODO: 自定义限制条件,比如:数量限制、大小限制等 // 根据 FileId 等获取文件详情
const fileInfo = componentInst.dc_drive.MAIN.GetFileInfo(ctx.GoContext(), input.DriveId, input.FileIds[0])
    log.Debug("--DEUBG: dc_file: PreCheckPostBatchDownloadFile: componentInst._drive._main_inst.GetFileInfo: ", JSON.stringify(fileInfo))


    // 通过 Type 区分文件与文件夹 file 文件、folder为文件夹
if (fileInfo.Type == "folder") {
        const req: ListFileInFolderByOffsetReq = {
            DriveId: input.DriveId,
            Limit: 1000,
            Offset: 0,
            ParentId: fileInfo.ParentId
        }

        // 获取文件夹下的文件
const childrenFile = componentInst.dc_drive.MAIN.ListFileInFolderByOffset(ctx.GoContext(), req)
    } else {
        // 如果不是文件夹,根据 FileId 等获取文件下载url
const res = componentInst.dc_file.MAIN.CheckPermToFileDownload(ctx.GoContext(), input.CompanyId, input.AccountId, input.FileIds[0], input.DriveId, input.WpsSid, input.WithChecksum)
    }
    return
}

👉效果截图

46IV3DA4ABAFI

批量文件下载时对文件进行前置检查定制

👉能力

dc_file.PreBatchDownloadFile

策略触发接口
dc_file.PreBatchDownloadFile/file/u/v1/drives/{drive_id}/files/batch_download

PreBatchDownloadFile:批量文件下载时对文件进行前置检查定制

👉可检查的字段

名称类型是否可以修改描述版本号
AccountIdstring账户Id23-11a
CompanyIdstring企业Id23-11a
FileIdsstring[]批量下载的文件Id列表23-11a
DriveIdstring文件存放的盘Id23-11a
WpsSidstring用来做url鉴权23-11a
WithChecksumboolean是否校验文件一致性23-11a

根据文件 id 调用 GetFileInfo 可以获取文件具体信息

**返回值:**无

👉代码示例

asyncfunctionPreBatchDownloadFile(ctx: service.PreBatchDownloadFileContext) {
    const input = ctx.ContextValue()
    // TODO: 自定义限制条件,比如:数量限制、大小限制等 return
}

单文件历史版本下载时对文件进行前置检查定制

👉能力

dc_file.PreCheckGetVersionDownloadUrl

PreCheckGetVersionDownloadUrl:单文件历史版本下载时对文件进行前置检查定制

👉可检查的字段

名称类型是否可以修改描述版本号
AccountIdstring账户Id23-11a
CompanyIdstring企业Id23-11a
DriveIdstring文件存放的盘Id23-11a
FileIdstring文件Id23-11a
Versionnumber文件历史历史版本23-11a

**返回值:**无

👉代码示例

// 历史版本下载asyncfunctionPreCheckGetVersionDownloadUrl(ctx: service.PreCheckGetVersionDownloadUrlContext) {
    const input = ctx.ContextValue()
    // TODO: 自定义限制条件return
}

单文件历史版本下载时获取Url进行定制

👉能力

dc_file.PostGetVersionDownloadUrl

PostGetVersionDownloadUrl:单文件历史版本下载时获取Url进行定制

👉可检查的字段

名称类型是否可以修改描述版本号
FileIdstring文件Id23-11a
DriveIdstring文件存放的盘Id23-11a
Urlstring文件下载路径23-11a

文件下载路径可以通过埋点修改

返回值:

名称类型描述版本号
Urlstring文件下载路径23-11a

👉代码示例

修改 url 路径

input、ouptut 均属于可以检查字段

asyncfunctionPostGetVersionDownloadUrl(ctx: service.PostGetVersionDownloadUrlContext) {
    const input = ctx.ContextValue()
    const output = ctx.Result()
    // 修改返回 url
    output.Url = "your url"return
}

批量下载修改下载url接口

👉能力

dc_file.PostBatchDownloadUrl

批量下载修改下载url接口,该埋点是被服务端循环调用,针对批量下载的文件循环遍历,调用埋点逻辑

返回值:

名称类型描述版本号
DownloadUrlstring文件下载路径,即是入参也是返回结果23-11a

👉代码示例

修改 文件下载地址

asyncfunctionPostBatchDownloadUrl(ctx: service.PostBatchDownloadUrlContext) {
    // TODOif (ctx.Result().DownloadUrl === "http://fdsaf"){
        ctx.Result().DownloadUrl="新地址"
    }
}

相关新闻

  • 【最佳实践】通过WPS 365快速构建企业级AI知识库

    【最佳实践】通过WPS 365快速构建企业级AI知识库

    在企业知识库中,您可以更加集中关注企业沉淀的知识文件夹,在其中可以通过快速阅读、问答等功能,快速获取知识、解答疑问,大幅提升办公效率。

    最佳实践 2026年1月1日
  • WPS协作产品消息审计能力助力客户应对信息安全、合规及消息追溯的挑战

    WPS协作产品消息审计能力助力客户应对信息安全、合规及消息追溯的挑战

    为了满足数字化办公时代组织对于企业内风险消息监控的需求,WPS提供了审计授权、消息搜索、审计操作、审计设置及审计日志等几大能力,助力企业提升内部消息的安全性和合规性。 能力简介 在数字化办公时代,即时通讯(IM)工具在组织的作用越发重要,随之要面对的就是风险消息监控、敏感词过滤、日志全量留存及多维分析等诸多问题来确保企业通讯的合规性。WPS协作产品为客户提供了消息审计的相关接口和基础能力,基于相关接口和能力,客户可以通过开发实现内容识别拦截违规信息、完整记录消息内容、时间、参与方等元数据,支持分…

    最佳实践 2025年12月11日
  • 自定义文件列表右键菜单项

    自定义文件列表右键菜单项

    企业需要在文件列表的右键菜单栏中,新增其它定制菜单项 如何在文件列表新增右键菜单项? 本定制方案仅适用于私有化WPS365版本 1. 方案概述 有时候,企业需要给不在组织通讯录中的成员共享文档,传统流程是把文档下载下来,通过邮件发送,易导致效率瓶颈。 现在,通过文档中心的扩展能力,可以直接在文件列表右键菜单新增自定义分享弹窗入口,简化协作流程。 这一功能不仅支持自定义分享弹窗,企业也可根据实际需要,在文件列表的右键菜单栏中,新增其它定制菜单项。 我们可以使用文档中心Web端(PC端)的开放能力,…

    最佳实践 2025年12月11日
  • 应用中心增加常用应用

    应用中心增加常用应用

    出于使用便捷的考虑,企业需要将常用应用放在统一入口 如何在应用中心添加常用应用入口? 该组件仅适用于私有化WPS365版本 1. 插件概述 出于使用便捷的考虑,企业需要将常用应用放在统一入口里。 比如,企业会将自己的OA、ERP等常用应用地址放到应用中心里,变成一个能找到所需应用的快捷入口。 包含三类应用:WPS自带应用、第三方应用和企业自研应用。 针对这种需求,我们可以使用文档中心PC端的开放能力,定制应用中心入口 实现效果 企业可以将第三方应用或自研应用加入应用中心。比如:将WPS Offi…

    最佳实践 2025年12月11日
  • WPS跨网域文件传输方案,安全效率两不误

    WPS跨网域文件传输方案,安全效率两不误

    WPS跨网域文件传输方案既能确保内网文件的安全性,也能让保密文件以受控的形式在内网和外网间灵活流转,提升团队间的协作效率和灵活性。 方案简介 WPS跨网域文件传输方案是满足企业在不同网域实现文件安全高效传输的解决方案。通过文件摆渡的方式,在隔离的网络环境(如内网与外网、不同安全域或网段)之间实现文件安全、可控、高效传输。其核心目标是打破数据孤岛,满足跨网办公协作需求,同时防止敏感信息泄露和网络攻击。 WPS跨网域文件传输方案还可以对接WPS协作的轻审批功能,实现审批后传输(支持定制对接其他审批)…

    最佳实践 2025年12月11日
  • PDF转Word全流程解决方案

    PDF转Word全流程解决方案

    方案简介 基于WPS WebOffice开放平台的格式转换能力,构建企业级文档中台,实现标书协议、合同管理、档案等PDF文件的自动化转换、结构化处理与业务系统无缝集成。 WPS WebOffice格式转换服务:提供PDF→Word的精准转换能力。支持保留原PDF的字体、段落、表格、图片等元素,针对扫描件PDF,支持OCR识别,支持单次上传100+文件批量转换。 企业文档中台:作为转换服务的调度中心和数据枢纽,实现转换流程与现有业务系统的无缝对接。拥有操作日志审计,完整记录转换操作的人员、时间、文…

    最佳实践 2025年12月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

立即咨询 企业版试用 上门服务

请您留言

感谢您的关注,你可留下联系方式,我们将第一时间与您联系。