Столкнулся со странной ошибкой при работе с внешним API - если путь к файлу без символа @ - то все отрабатывает нормально:
curl -k --location --request POST 'https://api.example/file-load/' --header 'Content-Type: multipart/form-data' --form 'filedata=/var/www/file.jpg'
{"message":"Файл с успешно загружен"}
Если же добавить @:
curl -k --location --request POST 'https://api.example/file-load/' --header 'Content-Type: multipart/form-data' --form 'filedata=@/var/www/file.jpg'
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>413 Request Entity Too Large</title>
</head><body>
<h1>Request Entity Too Large</h1>
The requested resource<br />/file-load/<br />
does not allow request data with POST requests, or the amount of data provided in
the request exceeds the capacity limit.
</body></html>
За что отвечает символ @ в пути к файлу?
И именно он требуется в спецификации по curl в PHP:
Все данные, передаваемые в HTTP POST-запросе. Для передачи файла, укажите перед именем файла @, а также используйте полный путь к файлу.
https://www.php.net/manual/ru/function.curl-setopt.php
UPDATE
@ является обязательным параметром для указания пути к файлу
https://curl.haxx.se/docs/manpage.html#-F
Для проверки взял пример приема файла на PHP, попробовал отправить файл curl-ом, без @ - получил ошибку.
Почему у нужной API-шки наоборот, с @ ошибка а без неё ок - будем разбираться уже с ними.