Используйте curl для загрузки в память CSV-файла

В настоящее время я использую Python, выполняю POST для нужного URL-адреса и загружаю файл csv в память:

Код Python:

csv_content = 'some,fake,single,row,csv\r\n'
requests.post(
    'http://some.location.com',
    files = {'form_field_name': ('file_name.csv', csv_content, 'text/csv')},
    # implicit "multipart/form-data" content-type header
)

Код Python работает хорошо, но я действительно хочу использовать curl для выполнения действия.

Что у меня есть: (я знаю, что многого не хватает, я пробовал варианты

curl -X POST http://some.location.com -H "Content-Type: text/csv"
  1. Я не уверен, что заголовок хорош
  2. Не знаю, как указать данные, так как -d будет недостаточно - я хочу добавить имя файла.
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
802
1

Ответы 1

Как насчет этого ответа? Есть несколько решений для вашей ситуации, поэтому, пожалуйста, считайте это одним из них.

Когда ваш скрипт Python запускается, "form_field_name": "some,fake,single,row,csv\r\n" отправляется как files. file_name.csv используется в качестве имени файла. В этом случае тело запроса выглядит следующим образом.

Тело запроса:

--boundaryboundary
Content-Disposition: form-data; name = "form_field_name"; filename = "file_name.csv"
Content-Type: text/csv

some,fake,single,row,csv

--boundaryboundary--

Образец завитка:

Когда используется вышеуказанное тело запроса, пример curl выглядит следующим образом.

curl -H "Content-Type: multipart/form-data; boundary=boundaryboundary" \
  -d $'--boundaryboundary\r\nContent-Disposition: form-data; name = "form_field_name"; filename = "file_name.csv"\r\nContent-Type: text/csv\r\n\r\nsome,fake,single,row,csv\r\n\r\n--boundaryboundary--' \
  "http://some.location.com"
  • Content-Type заголовка использует multipart/form-data; boundary=boundaryboundary.
  • Тело запроса используется напрямую.
  • Имя файла указано как file_name.csv.
  • Каждый разрыв строки был заменен на \r\n.

Если это не тот результат, который вы хотите, я извиняюсь.

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

camelBack 26.03.2019 19:34

@camelBack Спасибо за ответ. Я прошу прощения за неудобства. О it does not succeed, могу я спросить вас о подробной информации, и вы можете еще раз подтвердить свой скрипт Python? Потому что мой образец curl — это то же самое тело запроса с вашим скриптом Python. Я хотел бы подтвердить вашу ситуацию и изменить ее.

Tanaike 27.03.2019 00:56

Другие вопросы по теме