Загрузить файл с запятой в названии с помощью 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'