本文档由 石墨办公 提供。
.docx、.xlsx、.pptx)嵌入网页预览。预览功能必须依赖两个回调接口: 当前用户信息接口: {endpoint_url}/users/current/info文件元信息接口: {endpoint_url}/files/{fileId}用户打开预览时,石墨文档中台会调用这两个接口获取用户和文件信息。如果接口未实现或无法访问,文件将无法预览。
fileIdfileId 是您的系统中用于识别文件的 ID,由您自行生成和保存,例如:my-preview-file-a1b2c3fileId 应始终对应同一份文件内容。如果文件内容发生变化并且需要重新生成预览,请使用新的 fileId。{
"id": "user-123",
"name": "张三",
"avatar": "https://example.com/avatar/user-123.png",
"email": "zhangsan@example.com",
"teamGuid": "team-123"
}token 识别当前用户,不要在接口中固定返回某一个用户。{
"id": "my-preview-file-a1b2c3",
"name": "示例文档.docx",
"type": "file",
"permissions": {
"readable": true
},
"downloadUrl": "https://example.com/files/my-preview-file-a1b2c3/download",
"ext": "docx"
}type 必须为 file。permissions.readable 必须为 true,否则用户无法查看。downloadUrl 必须能被石墨文档中台访问,用于下载原文件。ext 是不带点的文件扩展名,例如 docx、xlsx、pptx。readable: true。signature 和 token{
"fileId": "my-preview-file-a1b2c3",
"signature": "your-signature",
"token": "your-user-token"
}signature 用于证明请求来自您的应用,必须在后端使用 appId 和 appSecret 生成。token 用于让您的回调接口识别当前用户,其格式和校验方式由您的系统决定。不要将 appSecret写入前端代码。
fileId、回调接口、signature 和 token。https://{weboffice_host}/sdk/v2/api/cloud-files/{fileId}/page?signature={signature}&token={token}src:weboffice-js-sdk 的 connect(推荐)weboffice-js-sdk 接入编辑,或希望由 SDK 统一创建 iframe、避免 query 携带鉴权场景。mode: 'preview',否则 SDK 会按默认的编辑模式打开文件。connect() 后,SDK 会自动在 container 中创建预览 iframe。connect() 时,weboffice-js-sdk 也会创建 iframe 打开预览页,因此两种接入方式不会改变下面的整体流程。预览结果会按 fileId缓存。不要在保持原fileId不变的情况下,仅替换downloadUrl中的文件内容;如需预览新内容,请使用新的fileId。
token 是否属于当前用户,且尚未过期。/users/current/info 是否能正确识别该用户。/files/{fileId} 是否对该用户返回 permissions.readable: true。downloadUrl 是否可从石墨文档中台所在网络访问。downloadUrl 返回的是否为真实文件内容,而不是登录页、错误页或重定向失败页。ext 是否与真实文件格式一致。endpoint_url:您在石墨应用中配置的回调根地址,例如 https://api.example.com/shimo-callback。weboffice_host:私有化部署的石墨文档中台访问域名,请使用实际环境地址。type 为 file,主要用于只读查看。documentPro),支持多人实时协同编辑和预览访问。.docx、.xlsx、.pptx),仅支持预览,不支持编辑。fileId 时就已确定,由您的系统负责维护对应关系。/files/{fileId}),但返回字段不同。您的后端需要根据 fileId 判断文件类型,并返回对应的文件信息。sdk-demo-go 可用于查看一套可运行的示例,但实际接入时只需按您的技术栈完成本文中的核心契约。