Я пытаюсь загрузить файл на веб-сервер с помощью cURL. Заголовки -H используются для предоставления информации о содержимом, и мне нужно передать три параметра.
Ниже приведен необработанный заголовок
–data-raw ^”–myBoundry^
Content-Disposition: form-data; name=”App” ^
execute=location/in/the/server/^
–myBoundry^
Content-Disposition: form-data;name=”file”;filename=”foo.csv“^
Content-Type: text/csv^
^
^
–myBoundry^
Content-Disposition: forma-data;name=”directory”^
^/upload/location/”^
–myBoundry–^
^”
Я вижу файл на сервере, но его размер всегда 0.
Мне интересно, где curl ожидает файл foo.csv, в том же месте, откуда мы запускаем скрипт curl, или в другом месте.
Я уже пробовал @/full/local/path/foo.csv, но результат был тем же.
Я новичок в cURL, будет полезно, если кто-то сможет направить меня в правильном направлении.
Я попытался указать полный путь к локальному файлу, но это не сработало.
Ответ
Проблема, с которой вы столкнулись, связана с тем, как вы формируете команду cURL для загрузки файла и передачей параметров. Разберёмся с этим шаг за шагом.
Прежде всего, стоит отметить, что cURL ожидает определённый формат для загрузки файлов с помощью параметра -F
. Вам не нужно вручную формировать границы и заголовки. Вместо этого cURL сделает это за вас, если вы используете правильный синтаксис.
Вот пример правильной команды для загрузки файла с использованием cURL:
curl -X POST "http://example.com/upload" \
-H "Content-Type: multipart/form-data" \
-F "App=location/in/the/server/" \
-F "file=@/path/to/foo.csv" \
-F "directory=/upload/location/"
Объяснение параметров:
-X POST
: Указывает, что мы отправляем POST-запрос.-H "Content-Type: multipart/form-data"
: Устанавливает правильный заголовок для загрузки файлов.-F "App=location/in/the/server/"
: Передает параметрApp
.-F "file=@/path/to/foo.csv"
: Использует@
для указания пути к файлу на вашем локальном компьютере. Убедитесь, что путь к файлуfoo.csv
указан правильно.-F "directory=/upload/location/"
: Передаёт параметрdirectory
.
Теперь о том, почему ваш файл может загружаться с нулевым размером:
-
Неправильный путь к файлу: Убедитесь, что указанный вами путь к
foo.csv
абсолютно правильный. Попробуйте выполнить командуls /path/to/
и убедитесь, что файл действительно существует. -
Права доступа: Убедитесь, что у вас есть необходимые права доступа к файлу
foo.csv
. Попробуйте выполнитьcat /path/to/foo.csv
, чтобы удостовериться, что файл доступен для чтения. - Серверная часть: Убедитесь, что сервер корректно обрабатывает полученные данные. Возможно, проблема кроется в скрипте, который принимает загрузку.
Если всё выполнено правильно, файл должен загружаться с правильным размером. Попробуйте использовать команду, представленную выше, и проверьте, решит ли это вашу проблему.