UNPKG

coze-plugin-utils

Version:

Comprehensive utility library for Coze plugins with multimedia processing, browser automation, cloud storage integration, and AI-powered video/audio generation capabilities

82 lines 3.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.uploadFile = uploadFile; exports.uploadFromTempFile = uploadFromTempFile; exports.uploadFromURL = uploadFromURL; const ali_oss_1 = __importDefault(require("ali-oss")); const node_path_1 = __importDefault(require("node:path")); const mime_1 = __importDefault(require("mime")); const promises_1 = __importDefault(require("node:fs/promises")); const media_1 = require("../media"); const core_1 = require("../core"); async function uploadFile(buffer, filename, dir = 'resource') { dir = `${dir}/${Math.random().toString(36).slice(2, 12)}`; filename = decodeURI(filename); buffer = typeof buffer === 'string' ? Buffer.from(buffer) : buffer; const ossConfig = (0, core_1.getGlobalConfig)('aliyun')?.oss; if (!ossConfig) { return { HttpCode: 500, Message: '未配置阿里云OSS' }; } const client = new ali_oss_1.default({ region: ossConfig.region, // 示例:'oss-cn-hangzhou',填写Bucket所在地域。 accessKeyId: ossConfig.accessKeyId, // 确保已设置环境变量OSS_ACCESS_KEY_ID。 accessKeySecret: ossConfig.accessKeySecret, // 确保已设置环境变量OSS_ACCESS_KEY_SECRET。 bucket: ossConfig.bucket, // 示例:'my-bucket-name',填写存储空间名称。 }); const cdnUrl = ossConfig.cdnUrl; try { const data = { HttpCode: 201, Message: '上传成功' }; const filepath = node_path_1.default.join(dir, filename); const res = await client.put(filepath, buffer); if (res.res.status >= 200 && res.res.status < 300) { data.url = `${cdnUrl}/${filepath}`; } return data; } catch (ex) { return { HttpCode: 500, Message: ex, url: filename }; } } async function uploadFromTempFile(tmpFile, autoClear = true) { const buffer = await promises_1.default.readFile(tmpFile); try { const res = await uploadFile(buffer, node_path_1.default.basename(tmpFile)); return res; } finally { if (autoClear) { const tmpDir = (0, core_1.getTempPath)(tmpFile); console.log('removing tmp dir...', tmpDir); await promises_1.default.rm(tmpDir, { recursive: true, force: true }); } } } // 通过 URL 上传文件 async function uploadFromURL(file) { const res = await fetch(file); const contentType = res.headers.get('Content-Type'); let ext = ''; if (contentType) { ext = `.${mime_1.default.getExtension(contentType)}` || ''; } const arrayBuffer = await res.arrayBuffer(); const match = file.match(/([^./]*?\.[^./]*)~tplv/); const buffer = Buffer.from(arrayBuffer); let filename = match?.[1]; if (ext && filename && !filename.endsWith(ext)) { filename += `${ext}`; } if (!filename) { if (!ext || ext === '.bin') { const mimeType = (0, media_1.detectMimeType)(buffer) || ''; const extension = (mimeType.split('/'))[1]; ext = extension ? `.${extension}` : ''; } filename = `${Math.random().toString(36).slice(2, 10)}${ext}`; } return await uploadFile(buffer, filename); } //# sourceMappingURL=aliyun.oss.js.map