【问题标题】:Regarding file upload parameter in curl command关于 curl 命令中的文件上传参数
【发布时间】:2021-06-11 07:36:32
【问题描述】:

我正在尝试在 azure devops bash 脚本任务中运行 curl 命令,我正在尝试从工件路径上传 jar。

在 curl 命令中给出静态文件路径时我能够成功运行它,但是我们如何动态传递文件路径?

curl -X POST \
https://anypoint.mulesoft.com/cloudhub/api/v2/applications \
-H 'authorization: bearer <your_token>' \
-H 'x-anypnt-env-id: <your_env_id>' \
-H 'x-anypnt-org-id: <your_org_id>' \
-F 'appInfoJson={
"domain": "<yourapplicationName>",
"muleVersion" : {"version":"3.9.1"},
"region" : "us-east-1", 
"monitoringEnabled":true,
"monitoringAutoRestart" : true,
"workers": {"amount":1, "type": {"name":"Micro","weight":"0.1","cpu":"0.1 vCores", "memory":"500 MB memory"}},
"loggingNgEnabled":true,
"persistentQueues":false,
 "properties":{
      "key1":"value1"
   }
}' \
-F autoStart=true \
-F file=@/path_to_the_file/yourapplication.jar

有没有办法动态地给出文件路径?我试图以这种方式提供-F file=@/path_to_the_file/**.jar,但** 未被接受。

【问题讨论】:

  • 你能用你的文件名设置一个变量并将它传递给你的 curl 吗?
  • 我试过 @Rakesh Gupta 它不接受 'variable =($ ls *.jar) echo $variable -F filepath=@"$variable" ' 语法对吗?
  • 那么,您要附加多个文件吗?
  • 没有我正在尝试单个文件,但该文件应该动态传递

标签: linux bash curl


【解决方案1】:

尝试使用变量中的文件名,如下所示。注意变量周围的 {}。确保您的 ls 命令仅返回 1 个文件。对于多个文件,请使用多个 -F 参数。

样本测试数据:

$ ls *.jar
b.jar
$ echo $(ls -R ${PWD}/*.jar)
/root/b.jar

以上命令生成文件的绝对路径

-F file=@$(ls -R ${PWD}/*.jar)

${PWD} 打印当前工作目录的路径并帮助创建相关文件的绝对路径。

另外,如果您想附加多个文件,请使用多个 -F 参数

【讨论】:

  • 如何通过文件动态传递 json 对象。我可以在 Azure devops 中使用下载安全文件任务并在我的脚本中附加该文件路径
  • Json 对象通过菱形刀片 -d 参数传递。还要确保正确设置内容类型标头
猜你喜欢
  • 2017-07-14
  • 1970-01-01
  • 2014-08-24
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 2015-01-02
相关资源
最近更新 更多