Загрузить файл с запятой в названии с помощью curl

Как я могу загрузить файл с именем yes, this filename has a comma.txt с кли curl?

Вы обычно делаете это, чтобы загрузить файл с curl:

curl --progress-bar -F "fileUpload=@filename.txt"

тем не мение curl интерпретирует запятые как несколько файлов для загрузки, поэтому это не будет работать:

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

Как я могу избежать имени файла?


Я уже нашел обходной путь, создав временную символическую ссылку на исходный файл и передав ее в curl. Однако проблема в том, что имя файла curl отправляет на сервер имя файла символической ссылки, а не исходный файл.

2 ответа

Решение

Вы не сказали, какую ОС вы используете. Следующие решения работают для 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" 
    

Это сработало для меня. В 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='example@gmail.com'
Другие вопросы по тегам