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

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

本定制方案仅适用于私有化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日
  • 新增自定义侧边栏菜单

    新增自定义侧边栏菜单

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

    最佳实践 2025年12月11日
  • 自定义文件传输面板

    自定义文件传输面板

    自定义文件传输面板,解决将文件从邮件、OA等系统中拉取文件上传到云文档过程中,传输进度无法跟踪的问题 定制导致文档上传逻辑改变,传输面板无法正常唤起,怎么办? 本定制方案仅适用于私有化WPS365版本 1. 方案概述 用户上传文件时,文档中心页面会出现一个显示“文件上传进度”的面板,这就是传输面板。 上传文件时 这里会显示上传进度,这就是“传输面板” 当企业在WPS文档中心上做了某些定制能力,可能导致WPS文档中心原有的上传逻辑被改变,影响传输面板的正常唤起,使得企业用户上传文件时,无从得知“文…

    最佳实践 2025年12月11日
  • 文档中心定制功能多语言适配

    文档中心定制功能多语言适配

    满足企业的多语言需求,为文档中心的定制功能提供多语言适配方案。

    最佳实践 2025年12月11日
  • 企业团队/人员自定义属性标签

    企业团队/人员自定义属性标签

    根据企业需求,为人员或团队自定义属性标签,可根据属性标签决定WPS业务表现,如根据人员安全等级判断能否访问某文档 如何给企业团队/人员标记属性? 本定制方案仅适用于私有化WPS365版本 1. 方案概述 出于安全、效率的目的,有些企业需要给团队/人员标记属性: 文档中心里,可以在团队空间、通讯录的团队/人员名称这两个位置,标记属性。 我们可以通过文档中心服务端、Web端(PC端)的开放能力,为企业团队/人员标记属性: 效果 定制后,企业团队/人员名称旁会出现属性名称。红框为定制后的团队属性红框为…

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

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

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

    最佳实践 2025年12月11日

发表回复

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

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

请您留言

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