通过curl语句下载文件

背景:

页面上有导出功能,但做了数目限制,如果把条件拆细,再去做导出,不是不行,只是这样的话,很耗费人力。
所以通过写个脚本,通过遍历参数的方式,调用导出接口,并把文件放到指定路径下。

以下例子,参数是 precinctids, 表示很多个区域,各个区域用空格隔开,
一个区域一个文件

这里要注意的一些地方:
(1)参数入参时, --date 要用双引号,当使用单引号时,它不会对参数进行解析
(2)当接口返回的数据流时,需要使用 curl -o "存在数据文件的绝对路径" ..... 这里需要带上 “-o” 这个参数,不然它也会提示。。

其它没什么需要注意的了,和普通的 curl 语句差不多。写个脚本,备用。

#!/bin/bash  
  
# 将输入的参数(预期为空格分隔的precinctId列表)转换为bash数组  
precinctIds=(01-01 01-02)  
  
# 遍历precinctId数组  
for precinctId in "${precinctIds[@]}"; do  
    # 构建输出文件名  
    output_filename="/tmp/data-export/demo_${precinctId}.xlsx"  
  
    # 执行curl命令  
    curl -o "$output_filename" --request POST \
      --url 'http://10.1.5.24:8080/v1/precincts/downLoad' \
      --header 'Accept: */*' \  ## 省略了部分header
      --data "{
        \"precinctId\": \"${precinctId}\",  ## 这里要用双引号,并用\,如果用单引号的话,参数会解析不出来。
        ...
    }"

  
    # 检查上一个命令的退出状态,如果不为0(表示失败),则打印错误信息  
    if [ $? -ne 0 ]; then  
        echo "Error downloading: $precinctId"  
    fi  
done  
  
# 所有下载完成后,打印“输出完毕”  
echo "输出完毕"
posted @ 2024-09-05 08:47  aaacarrot  阅读(25)  评论(0编辑  收藏  举报