UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

31 lines (30 loc) 1.46 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.uploadAppFile = void 0; const form_data_1 = __importDefault(require("form-data")); const request_1 = require("../request"); const get_tool_auth_headers_1 = require("../get-tool-auth-headers"); async function uploadAppFile({ siteDomain, appKey, fileBuffer, fileName, contentType, fileType = 0, }) { const authHeaders = await (0, get_tool_auth_headers_1.getToolAuthHeaders)(siteDomain); const form = new form_data_1.default(); form.append('file', fileBuffer, { filename: fileName, contentType, }); form.append('file_name', fileName); form.append('app_key', appKey); form.append('file_type', String(fileType)); // 使用 getBuffer() + getHeaders() 保证 boundary 一致, // 避免 axios v1.x 将 npm form-data 当作原生 FormData 处理导致的兼容问题 // 注意:app_key 只放 form body,不放 query params,避免网关层触发额外的权限校验 const formHeaders = form.getHeaders(); return (0, request_1.request)(`${siteDomain}/goapi/v5/app/resource/tool/file/upload`, { method: 'POST', data: form.getBuffer(), headers: Object.assign(Object.assign({}, authHeaders), formHeaders), }); } exports.uploadAppFile = uploadAppFile;