如何通过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
相关产品推荐
相关产品推荐

