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

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

本定制方案仅适用于私有化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="新地址"
    }
}

相关新闻

  • 文档中心欢迎页定制

    文档中心欢迎页定制

    在文档中心登录前进行品牌展示,为满足企业或组织的的个性化需求 如何为文档中心定制欢迎页? 该组件仅适用于私有化WPS365版本 1. 方案概述 欢迎页是由客户自己设计和定义的独立页面,可以在文档中心登录前进行品牌展示。 总的来说,欢迎页的内容客户可以根据自己的需求自行设计,通常比较高频的使用方式有: 如果没有定制欢迎页,客户在登录文档中心时,会直接进入文档中心登录页,输入账号和密码进行登录。 客户定制了文档中心欢迎页之后,遇到需要登录的场景,会先跳转进入企业欢迎页,在欢迎页进行相关操作(例如:点…

    最佳实践 2025年12月11日
  • 双因子认证

    双因子认证

    企业出于安全考虑,需要在修改功能或登录密级较高的页面时,对成员进行二次身份校验 企业需要双因子认证时,可以怎么操作? 该组件仅适用于私有化WPS365版本 1. 方案概述 一般来讲,用户登录的安全认证分为两种: 文档中心使用的是单因子认证的方式。 出于安全考虑,企业需要在修改定制应用功能前,比如修改消息审计、全局配置前。 或登录密级较高的页面时,对成员进行二次身份校验。 针对这种情况,我们可以使用文档中心管理后台的开放能力,定制双因子认证 实现效果 用户登录管理后台时,页面会跳出窗口,提醒用户绑…

    最佳实践 2025年12月11日
  • WPS 文档共享权限管控方案,精准授权高效协同

    WPS 文档共享权限管控方案,精准授权高效协同

    WPS文档共享权限管控方案,既能精准的配置文档访问、编辑、共享等权限,又能实现动态调整与全程留痕,有效保障企业文档信息安全与协作效率。 方案简介 WPS文档共享权限管控方案是针对企业文档协作中权限管理难题,提供精准授权与全程可控的解决方案。通过构建多层级权限管控体系,支持按角色/岗位细分权限、动态权限调整、协作行为留痕、权限到期自动回收功能,确保文档协作数据安全,提升内部协作效率。 该方案可与企业现有组织架构无缝对接,在企业私有环境内运行,最大程度保障文档协作数据不被泄露,为企业文档管理提供全方…

    最佳实践 2025年12月11日
  • 文档中心主题皮肤定制

    文档中心主题皮肤定制

    将企业主题色融入WPS365产品界面,使之与企业风格更为统一 如何为文档中心定制主题皮肤? 本定制方案仅适用于私有化WPS365版本 1. 方案概述 主题皮肤就是文档中心提供的界面颜色,下图为文档中心标准产品的主题皮肤: 出于以下需求的考虑,客户可能会需要定制个性化的主题皮肤: 实现效果 深色模式浅色模式护眼模式跟随系统模式注:以上展示的【深色】【浅色】【护眼】模式的具体颜色效果由客户自己定义,上图仅作参考示例 依赖端 文档中心PC端 依赖版本 23.0907(含)以上 依赖操作系统 支持X86…

    最佳实践 2025年12月11日
  • 新增自定义侧边栏菜单

    新增自定义侧边栏菜单

    企业想把文档中心上定制的新功能放在文档中心上,可以将入口放在文档中心左侧Tab栏

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

    应用中心增加常用应用

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

    最佳实践 2025年12月11日

发表回复

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

立即咨询 立即试用 上门服务

请您留言

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