You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Keitaato Admin API以表单形式发送Base64编码的ZIP文件

处理Keitaato Admin API的Base64编码ZIP文件提交

不需要强制将上传的ZIP文件先保存到服务器,直接在内存中读取文件二进制内容并转换为Base64编码,再组装表单数据发送即可,这种方式更高效。以下是不同后端语言的实现示例:

Node.js/Express 实现

const express = require('express');
const axios = require('axios');
const multer = require('multer');
const app = express();

// 使用内存存储上传文件,不写入磁盘
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });

app.post('/forward-to-keitaato', upload.single('zipFile'), async (req, res) => {
  try {
    // 将上传文件的二进制缓冲区转为Base64字符串
    const base64Zip = req.file.buffer.toString('base64');
    
    // 组装API要求的表单数据
    const formData = new FormData();
    formData.append('encoded_zip', base64Zip); // 替换为API实际要求的字段名
    // 若有其他表单字段,按需添加
    // formData.append('project_id', req.body.projectId);
    
    // 发送请求到Keitaato Admin API
    const apiResponse = await axios.post('https://your-keitaato-api-endpoint', formData, {
      headers: {
        ...formData.getHeaders(),
        'Authorization': 'Bearer YOUR_API_AUTH_TOKEN' // 替换为实际认证凭证
      }
    });

    res.json({ success: true, result: apiResponse.data });
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

app.listen(3000, () => console.log('服务启动在3000端口'));

Python/Flask 实现

from flask import Flask, request
import requests
import base64

app = Flask(__name__)

@app.route('/forward-to-keitaato', methods=['POST'])
def forward_zip():
    try:
        # 获取上传的ZIP文件对象
        zip_file = request.files.get('zipFile')
        if not zip_file:
            return {'error': '未上传ZIP文件'}, 400
        
        # 读取二进制内容并转为Base64字符串
        base64_zip = base64.b64encode(zip_file.read()).decode('utf-8')
        
        # 构造表单数据
        form_data = {
            'encoded_zip': base64_zip, # 替换为API实际要求的字段名
            # 'project_id': request.form.get('projectId') # 其他字段按需添加
        }

        # 发送请求到Keitaato Admin API
        headers = {'Authorization': 'Bearer YOUR_API_AUTH_TOKEN'}
        api_response = requests.post('https://your-keitaato-api-endpoint', data=form_data, headers=headers)
        api_response.raise_for_status()

        return {'success': True, 'result': api_response.json()}
    except Exception as e:
        return {'error': str(e)}, 500

if __name__ == '__main__':
    app.run(port=3000)

注意事项

  • 务必替换代码中的API端点、表单字段名、认证凭证为Keitaato Admin API文档中实际要求的内容
  • 如果上传的ZIP文件体积过大(比如超过100MB),内存处理可能导致服务器内存压力,此时可以先将文件临时保存到服务器磁盘,读取后转Base64,发送完成后再删除临时文件
  • 转换Base64时确保使用UTF-8编码解码,避免出现乱码问题

内容的提问来源于stack exchange,提问作者JKSDS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:32:09