使用 curl 上传名称中带有逗号的文件

使用 curl 上传名称中带有逗号的文件

我如何上传yes, this filename has a comma.txt以 cli命名的文件curl

您通常会这样做来上传文件curl

curl --progress-bar -F "[email protected]"

但是curl将逗号解释为要上传的多个文件,因此这将不起作用:

curl --progress-bar -F "fileUpload=@yes, this filename has a comma.txt"

我怎样才能转义文件名?


我已经找到了一种解决方法,即创建指向原始文件的临时符号链接并将其传递给 curl。但问题是curl发送到服务器的文件名是符号链接的文件名,而不是原始文件的文件名。

答案1

你没有说你使用的是什么操作系统。以下解决方案适用于 Linux(不仅适用于curl大多数类型的逃跑):

  • 将文件名放在引号中(您也需要对其进行转义):

      curl --progress-bar -F "fileUpload=@\"yes, this filename has a comma.txt\"" 
    
  • 转义逗号

      curl --progress-bar -F "fileUpload=@yes\, this filename has a comma.txt" 
    

答案2

这对我有用。apk 文件中有空格。

#!/bin/bash
 
API_TOKEN="____"

ARTIFACT_PATH=$(find $2 -name *.ipa -o -name *.apk)

curl https://upload.diawi.com/ \
-F token=${API_TOKEN} \
-F file=@"${ARTIFACT_PATH}" \
-F callback_emails='[email protected]'

相关内容