putObject
Upload local files to a specified bucket and directory in Tencent Cloud Object Storage (COS) using file path, name, and target directory details for efficient storage management.
Instructions
上传本地文件到存储桶
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fileName | No | 文件名 (存在存储桶里的名称) | |
| filePath | Yes | 文件路径 (包含文件名) | |
| targetDir | No | 目标目录 (存在存储桶的哪个目录) |
Implementation Reference
- src/server.ts:84-111 (registration)Registration of the 'putObject' MCP tool, including input schema using Zod and a thin handler that calls CosService.uploadFileserver.tool( 'putObject', '上传本地文件到存储桶', { filePath: z.string().describe('文件路径 (包含文件名)'), fileName: z.string().optional().describe('文件名 (存在存储桶里的名称)'), targetDir: z .string() .optional() .describe('目标目录 (存在存储桶的哪个目录)'), }, async ({ fileName, filePath, targetDir }) => { const res = await COSInstance.uploadFile({ fileName, filePath, targetDir, }); return { content: [ { type: 'text', text: JSON.stringify(res.data, null, 2), }, ], isError: !res.isSuccess, }; }, );
- src/services/cos/cos.service.ts:109-150 (handler)Main handler implementation in CosService.uploadFile: validates params, checks file existence, builds COS key, and calls cos.uploadFile to upload the local fileasync uploadFile(params: UploadFileParams) { // 验证并解析参数 const validParams = UploadFileParamsSchema.parse(params); const { filePath, targetDir = '', fileName } = validParams; try { // 检查文件是否存在 if (!filePath || !fs.existsSync(filePath)) { return { isSuccess: false, message: '此路径上文件不存在', data: '此路径上文件不存在: ' + filePath, }; } // 确定文件名 const actualFileName = fileName || path.basename(filePath); // 构建COS路径 const cosPath = this.buildCosPath(actualFileName, targetDir); // 上传文件 const cosParams: COS.UploadFileParams = { Bucket: this.bucket, Region: this.region, Key: cosPath, FilePath: filePath, }; const result = await this.cos.uploadFile(cosParams); return { isSuccess: true, message: '上传成功', data: result, }; } catch (error) { return { isSuccess: false, message: '上传失败', data: error, }; } }
- Zod schema for uploadFile parameters used by the service handlerexport const UploadFileParamsSchema = z.object({ filePath: z.string().optional(), targetDir: z.string().optional(), fileName: z.string().optional(), sourceUrl: z.string().optional() });
- Helper method to build the COS object key path from fileName and optional targetDirprivate buildCosPath(fileName: string, targetDir?: string): string { if (!targetDir) { return fileName; } // 规范化目标目录:移除头尾斜杠 const normalizedDir = targetDir.replace(/^\/+|\/+$/g, ''); return normalizedDir ? `${normalizedDir}/${fileName}` : fileName; }
- src/server.ts:87-93 (schema)Input schema defined directly in the tool registration for putObject parameters{ filePath: z.string().describe('文件路径 (包含文件名)'), fileName: z.string().optional().describe('文件名 (存在存储桶里的名称)'), targetDir: z .string() .optional() .describe('目标目录 (存在存储桶的哪个目录)'),