有些企业出于文档安全、带宽分配等原因,需要限制或全面杜绝文件上传。文档中心开放能力支持企业定制上传功能。

如何限制企业用户上传特定文件?

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

1. 方案概述

有些企业出于文档安全、带宽分配等原因,需要限制文件上传:

  • 可能是“禁止某种格式的文件被上传文档中心”,因为有些格式可能夹带病毒。
  • 可能是“禁止个人设备上传文件”,避免企业用户误把个人电脑、手机里的个人文件上传公司文档中心。
  • 可能是不希望网络带宽被占用,需要设置“多少大小以上的文件禁止上传”……

有些企业希望完全杜绝以上风险,全面禁止企业用户上传文件。

针对这两种情况,我们可以使用文档中心服务端、Web端(PC端)、H5端(移动端)的开放能力,定制上传功能:

实现方式&效果方案一需禁止特定文件类型通过修改文件上传接口的策略并进行校验,可定制5种限制:文件格式、文件大小、上传文件的设备、上传文件的IP、文件名称。KWOICHBAABADYL73IAHBAACQAW限制特定文件格式限制文件大小FTCLQKY4ADQBW5223SKY4AAAEE限制上传文件的设备、IP限制特定文件名称禁止上传
方案二需全面禁止上传将文档中心Web端、H5端的的按钮完全隐藏、屏蔽,来达到禁止完全上传的效果。3GICG2A3ABQEMCEIQGLA4AAAFQ定制前,文件夹里有上传按钮定制后,上传按钮不可见
涉及接口文件请求上传文件提交上传
依赖版本方案一:版本23-10a(含)以上可支持方案二:版本24-02b(含)以上可支持
依赖操作系统皆支持X86、XC

2. 使用指南

👉文件上传前校验

使用服务端hook,修改文件上传相关接口的策略并进行校验。

📌 注意

存在多个接口可实现相同功能的情况,使用hook前需查看文档注意触发策略接口。

能力:

功能埋点触发策略接口适用版本
文件上传时对文件名称进行前置检查dc_file.CheckFilenameBeforeRequestUploaddc_file_new.CheckFilenameBeforeRequestUpload/file/u/v1/drives/{drive_id}/files/{parent_id}/request_upload 文件请求上传/file/u/v1/drives/{drive_id}/files/{parent_id}/commit_upload 文件提交上传/v7/drives/{drive_id}/files/{parent_id}/request_upload 文件请求上传/v7/drives/{drive_id}/files/{parent_id}/commit_upload 文件提交上传23-10a
文件上传时对文件进行前置检查定制dc_file.PreCheckBeforeRequestUploaddc_file_new.PreCheckBeforeRequestUpload/file/u/v1/drives/{drive_id}/files/{parent_id}/request_upload 文件请求上传/file/u/v1/drives/{drive_id}/files/{parent_id}/commit_upload 文件提交上传/v7/drives/{drive_id}/files/{parent_id}/request_upload 文件请求上传/v7/drives/{drive_id}/files/{parent_id}/commit_upload 文件提交上传23-10a
获取设备信息componentInst.GetDevice23-10a

PreCheckBeforeRequestUpload同样可以进行文件名称检测

使用方法:

async function PreCheckBeforeRequestUpload(ctx: service.PreCheckBeforeRequestUploadContext) {
  // 获取设备信息
  let device = componentInst.GetDevice(ctx.GoContext());
  const IP = device.Device.IP;
  const DeviceType = device.Device.DeviceType;
  // 安卓端禁止上传
  if (DeviceType === "Android") throw new JSBizError(400, "android not support upload");

  // 限制IP
  if (IP === "10.0.2.2") throw new JSBizError(400, "IP not support upload");

  const input = ctx.ContextValue();
  // 获取格式
  const ext = fileExt(input.Filename);

  // 限制格式
  if (ext !== "txt") throw new JSBizError(400, "only txt file can be uploaded");

  // 限制文件名称长度
  if (input.Filename.length > 10) throw new JSBizError(400, "file name too long");

  // 限制文件大小为20字节
  if (input.FileSize > 20) throw new JSBizError(400, "file size too large");
}

// 检查上传文件名称
async function CheckFilenameBeforeRequestUpload(ctx: service.CheckFilenameBeforeRequestUploadContext) {
  const input = ctx.Argument();
  // 文件名称长度不能大于10个字符
  if (input.FileName.length > 10) throw new JSBizError(400, "file name too long");
  // NOTE: 如果不定制,使用 ctx.Next() 执行原有逻辑,防止返回零值导致云文档逻辑出错
  ctx.Next()(ctx);
}

效果:

文件大小限制6Q7LOKY4ABQGY
文件格式校验K27LOKY4AAAGU
IP/设备限制FTCLQKY4ADQBW
文件名称限制5223SKY4AAAEE

👉文件上传前端定制

上传前端定制主要包括下面几个方面

产品端适用场景说明
上传按钮隐藏5AXCG2A3ACAACJNWCG2A3AAQEG3GICG2A3ABQEMUHOSG2A3ABAEO文件列表右上方左侧导航栏团队无文档时空白位置右键
上传按钮拦截BMFIATBBACQF6NUFIATBBADQEY3GICG2A3ABQEMUQEYATBBADQHO文件列表右上方左侧导航栏团队无文档时空白位置右键
拖拽上传拦截ULKAALA4AAAGS

上传按钮隐藏(团队无文档时)

能力:

功能埋点适用版本
挂载sdk.kdrive.fileList.empty.uploadButton.onAdded23-05b
隐藏sdk.kdrive.fileList.empty.uploadButton.hide23-05b

文件列表右上方、左侧导航栏、空白位置右键等可见文件操作项拦截文档,这里不再重复介绍

使用方法:

// 上传按钮加载后
sdk.kdrive.fileList.empty.uploadButton.onAdded(() => {
  // 隐藏上传按钮
  sdk.kdrive.fileList.empty.uploadButton.hide();
});

📌 注意

均为sdk的基本DOM处理能力

效果:

CEIQGLA4AAAFQ

上传按钮拦截

能力:

  • 统一点击拦截埋点:sdk.kdrive.uploadButton.onClick(202402B版本后)
功能埋点适用版本是否支持多插件是否支持异步
点击拦截sdk.kdrive.uploadButton.onClick24-02b

使用方法:

sdk.kdrive.uploadButton.onClick((data) => {
  // 使用data进行定制操作
  console.log(data);
  // true时拦截原本逻辑,false时会正常调用
  return true;
});

效果:

WLBYWOI4ADQDY

拖拽上传拦截

能力:

功能埋点适用版本是否支持多插件是否支持异步
拖拽拦截sdk.kdrive.upload.onDragInterecpt23-08b

使用方法:

sdk.kdrive.upload.onDragInterecpt((data)=>{
  // 使用data进行定制操作
  console.log(data)
  // true时拦截原本逻辑,false时会正常调用
  return true
})

效果:

V7KKEOI4ABACM

相关新闻

  • 自定义云文档操作项

    自定义云文档操作项

    响应企业安全、效率需求,屏蔽、禁用、拦截、扩展云文档的导入导出等操作。 如何屏蔽\禁用\拦截\扩展文件操作项? 本定制方案仅适用于私有化WPS365版本 1. 方案概述 文档中心里,这些“新建”“导入”“上传”“导出”“分享”等按钮,都是文件操作项,企业用户可以使用这些按钮操作文件。 有些企业可能出于安全、效率等需求,希望屏蔽\禁用、拦截、扩展部分文件操作项。 屏蔽\禁用 指的是企业担心文档泄漏,希望完全禁止企业用户下载文档,想屏蔽\禁用WPS文档中心的下载按钮。屏蔽:指“操作项完全不可见”禁用…

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

    应用中心增加常用应用

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

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

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

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

    最佳实践 2025年12月11日
  • 登录密码页和访问到期页定制

    登录密码页和访问到期页定制

    针对设有密码的文件夹,企业可以定制密码登录页及访问到期页

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

    自定义文件传输面板

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

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

    文档中心主题皮肤定制

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

    最佳实践 2025年12月11日

发表回复

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

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

请您留言

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