Shell脚本如何将文件读取为字节流并编码为base64用于API请求
解决方案
Shell 中完全可以实现你的需求,且不需要手动做「读取为字节数组」的操作:Linux/类Unix系统自带的base64工具默认会直接读取文件的原始二进制字节流,输出的标准Base64编码结果完全适配.Net后端的解析要求。
具体操作步骤
1. 编码文件为Base64并赋值给变量
- 针对Linux系统(GNU base64):
执行以下命令即可将目标文件编码为无换行的Base64字符串并存入变量,-w 0参数作用是禁用默认的每76字符自动换行,避免请求体格式出错:# 替换 your_file.json 为你的实际JSON文件路径 file_base64=$(base64 -w 0 your_file.json) - 针对macOS系统:
系统自带的base64工具参数有差异,用-b 0禁用换行:file_base64=$(base64 -b 0 your_file.json)
2. 验证编码正确性(可选)
执行以下命令解码变量内容,确认和原文件内容一致即可:
echo "$file_base64" | base64 -d
3. 构造请求体调用API
直接把得到的$file_base64变量填入JSON请求体即可,注意你示例中的b' P....是Python字节对象的标识格式,实际传参时不需要携带b'和末尾的单引号,直接传纯Base64字符串即可,.Net后端会自动将Base64字符串解码为字节数组。
使用curl发送请求的示例:
curl -X POST 你的API接口地址 \ -H "Content-Type: application/json" \ -d "{\"report_file_content\": \"$file_base64\"}"
注意事项
- Base64编码后只会包含大小写字母、数字、
+、/、=这几类字符,不会破坏JSON结构,不需要额外做转义处理。 - 如果你的文件体积较大,直接用上述方式赋值变量可能会有性能问题,这种场景可以直接把编码结果写入临时文件再调用。
内容的提问来源于stack exchange,提问作者placplacboom
相关产品推荐
相关产品推荐

