@lark-project/cli
Version:
飞书项目插件开发工具
31 lines (30 loc) • 1.46 kB
JavaScript
;
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;