通过Autodesk Forge API获取Fusion Teams Doc公开分享链接及相关操作咨询
Autodesk Forge API 相关问题解答
1. 是否可通过Forge API获取文件的公开分享URL?
可以。通过Forge Data Management API创建公开共享链接后就能获取对应的URL,核心步骤:
- 先定位目标文件对应的
project_id和item_id - 调用
POST /data/v1/projects/{project_id}/items/{item_id}/relationships/refs接口,创建类型为shared的引用,请求体指定权限为view(公开只读) - 接口返回响应里的
data.links.href就是可公开访问的分享URL
2. 按文件名搜索团队中心文件并返回分享URL?可行吗?有脚本示例吗?
可行。先通过搜索接口定位目标文件,再生成共享链接。以下是简化的Node.js示例(用axios发送请求,注释已做简化适配新手):
const axios = require('axios'); // 替换成你的实际信息 const FORGE_CLIENT_ID = '你的Client ID'; const FORGE_CLIENT_SECRET = '你的Client Secret'; const PROJECT_ID = '你的团队中心项目ID'; const TARGET_FILENAME = '要搜索的文件名'; // 获取Forge访问令牌 async function getAccessToken() { const res = await axios.post( 'https://developer.api.autodesk.com/authentication/v1/authenticate', new URLSearchParams({ client_id: FORGE_CLIENT_ID, client_secret: FORGE_CLIENT_SECRET, grant_type: 'client_credentials', scope: 'data:read data:write' }) ); return res.data.access_token; } // 按文件名搜索文件 async function searchFile(token, filename) { const res = await axios.post( `https://developer.api.autodesk.com/data/v1/projects/${PROJECT_ID}/search`, { filter: { type: 'items', attributes: { displayName: filename } } }, { headers: { Authorization: `Bearer ${token}` } } ); return res.data.data[0]; // 返回第一个匹配结果 } // 创建公开分享链接 async function createShareLink(token, projectId, itemId) { const res = await axios.post( `https://developer.api.autodesk.com/data/v1/projects/${projectId}/items/${itemId}/relationships/refs`, { data: { type: 'refs', attributes: { name: 'Public Share', permission: 'view', extension: { type: 'refs:autodesk.core:SharedRef', version: '1.0' } }, relationships: { target: { data: { type: 'items', id: itemId } } } } }, { headers: { Authorization: `Bearer ${token}` } } ); return res.data.data.links.href; } // 主执行流程 async function main() { try { const token = await getAccessToken(); const fileItem = await searchFile(token, TARGET_FILENAME); if (!fileItem) { console.log('未找到匹配的文件'); return; } const shareUrl = await createShareLink(token, PROJECT_ID, fileItem.id); console.log('文件公开分享URL:', shareUrl); } catch (err) { console.error('出错了:', err.response?.data || err.message); } } main();
运行前先执行npm install axios安装依赖,再替换代码里的占位符为你的实际信息即可。
3. 是否可通过API修改文件名?有现成脚本吗?
可以。通过PATCH /data/v1/projects/{project_id}/items/{item_id}接口修改文件item的displayName属性,以下是简化示例:
const axios = require('axios'); // 替换成你的实际信息 const FORGE_CLIENT_ID = '你的Client ID'; const FORGE_CLIENT_SECRET = '你的Client Secret'; const PROJECT_ID = '你的项目ID'; const ITEM_ID = '要修改的文件item ID'; const NEW_FILENAME = '新的文件名'; async function getAccessToken() { const res = await axios.post( 'https://developer.api.autodesk.com/authentication/v1/authenticate', new URLSearchParams({ client_id: FORGE_CLIENT_ID, client_secret: FORGE_CLIENT_SECRET, grant_type: 'client_credentials', scope: 'data:write' }) ); return res.data.access_token; } async function renameFile(token) { await axios.patch( `https://developer.api.autodesk.com/data/v1/projects/${PROJECT_ID}/items/${ITEM_ID}`, { data: { type: 'items', id: ITEM_ID, attributes: { displayName: NEW_FILENAME } } }, { headers: { Authorization: `Bearer ${token}` } } ); console.log('文件名修改成功'); } async function main() { try { const token = await getAccessToken(); await renameFile(token); } catch (err) { console.error('修改失败:', err.response?.data || err.message); } } main();
同样需要先安装axios,替换占位符后运行即可。
内容的提问来源于stack exchange,提问作者william0497
相关产品推荐
相关产品推荐

