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

如何捕获经base64管道传输的cURL下载失败情况

解决cURL下载并Base64编码后无法判断操作状态的问题

判断cURL下载是否成功

默认管道命令只会返回最后一个命令的退出码,所以即使curl下载失败,只要base64正常运行,整个命令的退出码还是0。可以用以下两种方式获取curl的真实状态:

  • 启用pipefail选项,让管道的退出码等于第一个失败命令的退出码:

    set -o pipefail
    output=$(curl -L -o - "$url" | base64)
    # 检查整体退出码
    if [ $? -eq 0 ]; then
      echo "下载及Base64编码均成功"
    else
      echo "下载或编码操作失败"
    fi
    
  • 用bash的PIPESTATUS数组分别获取curl和base64的退出码:

    output=$(curl -L -o - "$url" | base64)
    curl_exit=${PIPESTATUS[0]}
    base64_exit=${PIPESTATUS[1]}
    
    if [ $curl_exit -eq 0 ]; then
      echo "文件下载成功"
      if [ $base64_exit -eq 0 ]; then
        echo "Base64编码成功"
      else
        echo "Base64编码失败,错误码:$base64_exit"
      fi
    else
      echo "文件下载失败,错误码:$curl_exit"
    fi
    

验证变量中内容是否正确

  • 检查Base64格式合法性:Base64编码后的内容长度必须是4的倍数,可通过以下命令验证:

    if [ $(( ${#output} % 4 )) -eq 0 ]; then
      echo "编码内容符合Base64格式规范"
    else
      echo "编码内容可能存在异常"
    fi
    
  • 解码后验证内容:将变量中的Base64内容解码,通过文件大小、哈希值等方式对比原文件(若可获取):

    # 解码到文件
    echo "$output" | base64 -d > downloaded_decoded
    # 对比原文件与解码文件的MD5哈希
    # md5sum original_file downloaded_decoded
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:57:38